如何执行置换特征重要性?

数据挖掘 机器学习 深度学习 数据挖掘 预测建模 特征选择
2022-03-01 15:26:57

我正在尝试执行特征选择。目前使用基于树的分类器,即使是随机生成的列也高于我的一些真实列。所以我正在阅读关于PFI. 有人可以帮我理解要遵循的步骤吗?

1) 将我的数据保存在 csv 文件中

2)填写缺失值/清理/准备数据

3) 将数据拆分为训练和测试

4) 标准化训练和测试数据

5)选择一个模型(比如说逻辑回归)

6) 将训练数据拟合到 logreg 模型

7) 使用输入测试数据进行预测

我为我的模型提供了以下代码

logreg=LogisticRegression() # step 5
logreg_cv.fit(X_train_std,y_train) # step 6
y_pred = logreg_cv.predict(X_test_std) # step 7

如果您能以菜鸟可以理解的方式进行解释,那将真的很有帮助。我是 ML 新手,所以它真的很有帮助

PFI这里适合哪里?我看到我们有eli5包,但还没有找到一个例子。

更新 - 建议解决方案后我的代码

logreg=LogisticRegression()
pi=PermutationImportance(logreg, cv=2).fit(X_train_std,y_train) # error is in this line. 
rfe=RFECV(pi, step=1, n_jobs=-1, cv=5, scoring="auc").fit(X_train_std,y)
y_pred = rfe.predict(X_test_std)
1个回答

好的,让我们用一些基本步骤来回答这个问题:

你已经做了你所说的,直到可以做的第 5 步

from sklearn.feature_selection import RFECV
from eli5.sklearn import PermutationImportance
pi=PermutationImportance(logreg, cv=2).fit(X_train,y)
selector=RFECV(pi, step=10, n_jobs=-1, cv=2, scoring="f1_macro").fit(X_train,y)

现在做预测

selector.predict(X_test)

或绘制最重要的特征

import matplotlib.pyplot as plt plt.plot(selector.grid_scores_)