如果输入为零,我想创建一个如下所示的数组:
[1,0,0,0,0,0,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)
如果输入为5:
[0,0,0,0,0,1,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)
对于上面我写道:
np.put(np.zeros(10),5,1)
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
有什么方法可以在一行中实现吗?
我已经从scikit-learn的SGDClassifier包中成功运行了一个逻辑回归模型,但是SGDClassifier.coef_由于输入数据是通过scikit-learn的OneHotEncoder进行转换的,因此无法轻松解释该模型的系数(通过访问)。
我的原始输入数据X的形状为(12000,11):
X = np.array([[1,4,3...9,4,1],
[5,9,2...3,1,4],
...
[7,8,1...6,7,8]
])
Run Code Online (Sandbox Code Playgroud)
然后,我应用了一种热编码:
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder()
X_OHE = enc.fit_transform(X).toarray()
Run Code Online (Sandbox Code Playgroud)
产生形状数组(12000,696):
X_OHE = np.array([[1,0,1...0,0,1],
[0,0,0...0,1,0],
...
[1,0,1...0,0,1]
])
Run Code Online (Sandbox Code Playgroud)
然后,我访问模型的系数,SGDClassifier.coef_从而产生形状数组(1,696):
coefs = np.array([[-1.233e+00,0.9123e+00,-2.431e+00...-0.238e+01,-1.33e+00,0.001e-01]])
Run Code Online (Sandbox Code Playgroud)
我如何将系数值映射回中的原始值X,所以我可以说类似“如果变量foo的值为bar,则目标变量增加/减少bar_coeff“?
让我知道您是否需要有关数据或模型参数的更多信息。谢谢。
我在SO上发现了一个未解决的问题:如何在scikit-learn上进行标签编码和一种热编码后检索系数名称?