Scikit-Learn线性回归如何获得系数的各自特征?

时间:2014-11-15 23:14:52

标签: scikit-learn linear-regression feature-selection

我尝试通过评估回归系数输出来执行特征选择,并选择具有最高幅度系数的要素。问题是,我不知道如何获得相应的功能,因为只有系数从coef._属性返回。文档说:

  

线性回归问题的估计系数。如果多个   在拟合期间传递目标(y 2D),这是一个2D数组   shape(n_targets,n_features),如果只传递一个目标,   这是长度为n_features的一维数组。

我正在进入我的regression.fit(A,B),其中A是一个二维数组,文档中每个要素的tfidf值。示例格式:

         "feature1"   "feature2"
"Doc1"    .44          .22
"Doc2"    .11          .6
"Doc3"    .22          .2

B是我的数据目标值,只是与每个文档相关的数字1-100:

"Doc1"    50
"Doc2"    11
"Doc3"    99

使用regression.coef_,我得到一个系数列表,但不是它们的相应特征!我怎样才能获得这些功能?我猜我需要修改B目标的结构,但我不知道如何。

7 个答案:

答案 0 :(得分:7)

我想你正在做一些功能选择任务。好吧,使用regression.coef_确实得到特征的相应系数,即regression.coef_[0]对应于“feature1”而regression.coef_[1]对应于“feature2”。这应该是你想要的。

我反过来推荐来自sklearn的树模型,它也可以用于特征选择。具体来说,请查看here

答案 1 :(得分:7)

我发现的工作是:

X =您的自变量

coefficients = pd.concat([pd.DataFrame(X.columns),pd.DataFrame(np.transpose(logistic.coef_))], axis = 1)

您所说的假设:regression.coef_的顺序与TRAIN集中的顺序在我的经验中是正确的。 (与基础数据一起使用,并检查X和y之间的相关性)

答案 2 :(得分:4)

coefficients = pd.DataFrame({"Feature":X.columns,"Coefficients":np.transpose(logistic.coef_)})

答案 3 :(得分:1)

您可以通过创建数据框来做到这一点:

cdf = pd.DataFrame(regression.coef_, X.columns, columns=['Coefficients'])
print(cdf)

答案 4 :(得分:1)

zip中的系数和特征

print(list(zip(X_train.columns.tolist(),logreg.coef_[0])))

DataFrame中的系数和特征

pd.DataFrame({"Feature":X_train.columns.tolist(),"Coefficients":logreg.coef_[0]})

enter image description here

答案 5 :(得分:0)

假设您的火车数据X变量是'df_X',那么您可以映射到字典中并馈入pandas数据框以获取映射:

pd.DataFrame(dict(zip(df_X.columns,model.coef_[0])),index=[0]).T

答案 6 :(得分:0)

尝试将它们按数据列名称作为索引的顺序放置:

SUM(CASE WHEN C < A.... doesn't work.