我正在探索一个数据集,目的是找到任何有趣的关系(有很多感兴趣的变量,我想看看哪些特征或特征组合可以预测它们)。
作为第一种方法,我成功地使用套索计算了多变量(几个目标变量)回归。
pipeline = Pipeline([
('scaler', StandardScaler()),
('model', Lasso())])
search = GridSearchCV(pipeline,
{'model__alpha':np.arange(0.1,10,0.1)},
cv = 5, scoring="neg_mean_squared_error",verbose=3
)
search.fit(X_train,y_train)
search.best_params_
coefficients = search.best_estimator_.named_steps['model'].coef_
importance = np.abs(coefficients)
现在我想了解预测变量的重要性,包括它们的特征名称,因为
importance
只是一堆数字。
我考虑过创建一个包含特征和目标的列名称的数组并打印名称+系数,但我的问题是我不完全确定如何确保对应关系(正确的名称显示正确的系数) )。 有人可以帮我吗?
这里有一些附加信息:
importance
的形状:(30, 26)我也很感激有关使用哪些重要性指标的任何其他建议或有关可能分析的任何建议。
系数与 X_train 的列顺序相同。 我不建议对系数执行“np.abs”。你正在失去关于他们是+ve还是-ve的宝贵信息。您可以保持标志原样并使其形象化。见下文。
我会创建一个像这样的 pandas 数据框:
import pandas as pd
pd.options.plotting.backend='plotly' #or use matplotlib
pdf = pd.DataFrame(data=coefficients, columns=<List of your column names>)
fig = pdf.T.plot(kind='bar') # T stands for transpose
fig.plot()
我通常使用plotly作为后端,因为我喜欢它的API,它更直观,而且图表是“交互式”的
一旦获得“无花果”选项,您就可以使用颜色信息和其他信息更新迹线。我通常采用“百分位数”,然后以柔和的颜色渐变分配从深红到橄榄绿的颜色。
例如像这样使用 qcut 函数:
pd.qcut(
df[value_col],
4,
labels=['limegreen', 'seagreen', 'green', 'darkgreen']
).to_list()
您可以使用您选择的颜色