我已经成功地从scikit learnSGDClassifier包中运行了一个logistic回归模型,但是无法轻松地解释模型的系数(通过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]
])
然后我应用了一个热编码:
^{pr2}$产生一个形状数组(12000696):
X_OHE = np.array([[1,0,1...0,0,1],
[0,0,0...0,1,0],
...
[1,0,1...0,0,1]
])
然后,我用SGDClassifier.coef_
访问模型的系数,它产生一个形状数组(1696):
coefs = np.array([[-1.233e+00,0.9123e+00,-2.431e+00...-0.238e+01,-1.33e+00,0.001e-01]])
如何将系数值映射回X
中的原始值,这样我就可以说“如果变量foo
的值是bar
,那么目标变量就会增加/减少bar_coeff
”?在
如果你需要更多关于数据或模型参数的信息,请告诉我。谢谢您。在
我在SO上发现了一个未回答的问题:How to retrieve coefficient names after label encoding and one hot encoding on scikit-learn?
在回顾了这个用户对
OneHotEncoder
here的详细解释之后,我能够创建一个(有点骇人听闻的)方法来将模型系数与原始数据集联系起来。在假设您已正确设置
OneHotEncoder
:你已经成功地运行了一个GLM模型,比如:
^{pr2}$其系数为
clf.coef_
:您可以使用下面的方法将
X_OHE
中编码的1和0追溯到X
中的原始值。我建议您阅读上面提到的关于OneHotEncoding
(链接在顶部)的详细说明,否则下面的内容看起来像是胡言乱语。但简而言之,下面的代码迭代X_OHE
中的每个feature
,并使用enc
内部的feature_indices
参数来进行转换。在其中R是这样的(我最初编码了公司部门的名称):
所以,现在你可以说,“当员工在‘Foo1’部门时,目标变量增加了3.929413。在
相关问题 更多 >
编程相关推荐