相关疑难解决方法(0)

一个使用numpy的热编码

如果输入为零,我想创建一个如下所示的数组:

[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)

但它不起作用.

有什么方法可以在一行中实现吗?

python numpy one-hot-encoding

34
推荐指数
3
解决办法
6万
查看次数

Scikit模型运行w / OneHotEncoding后如何检索原始变量

我已经从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上进行标签编码和一种热编码后检索系数名称?

python numpy scikit-learn

5
推荐指数
1
解决办法
520
查看次数

标签 统计

numpy ×2

python ×2

one-hot-encoding ×1

scikit-learn ×1