我尝试通过评估回归系数输出来执行特征选择,并选择具有最高幅度系数的要素。问题是,我不知道如何获得相应的功能,因为只有系数从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目标的结构,但我不知道如何。
答案 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)
print(list(zip(X_train.columns.tolist(),logreg.coef_[0])))
pd.DataFrame({"Feature":X_train.columns.tolist(),"Coefficients":logreg.coef_[0]})
答案 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.