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

jef*_*rey 16 linear-regression feature-selection scikit-learn

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

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

我传入了我的regression.fit(A,B),其中A是一个二维数组,文档中每个特征的tfidf值.示例格式:

         "feature1"   "feature2"
"Doc1"    .44          .22
"Doc2"    .11          .6
"Doc3"    .22          .2
Run Code Online (Sandbox Code Playgroud)

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

"Doc1"    50
"Doc2"    11
"Doc3"    99
Run Code Online (Sandbox Code Playgroud)

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

小智 14

我发现的工作是:

X =你的自变量

coefficients = pd.concat([pd.DataFrame(X.columns),pd.DataFrame(np.transpose(logistic.coef_))], axis = 1)
Run Code Online (Sandbox Code Playgroud)

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

  • 我认为你可以只做 pd.DataFrame(zip(X.columns,logistics.coef_)) (5认同)

Pra*_*kar 8

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

cdf = pd.DataFrame(regression.coef_, X.columns, columns=['Coefficients'])
print(cdf)
Run Code Online (Sandbox Code Playgroud)


Jak*_*x32 7

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

好吧,我反过来推荐sklearn的树模型,它也可以用于特征选择.具体来说,请看这里.


小智 6

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


小智 5

zip 中的系数和特征

print(list(zip(X_train.columns.tolist(),logreg.coef_[0])))
Run Code Online (Sandbox Code Playgroud)

DataFrame 中的系数和特征

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

在此输入图像描述