SelectFromModel() 如何从 from_model.py 工作?

Posted

技术标签:

【中文标题】SelectFromModel() 如何从 from_model.py 工作?【英文标题】:How does SelectFromModel() work from from_model.py? 【发布时间】:2018-12-19 19:12:49 【问题描述】:
fsel = ske.ExtraTreesClassifier().fit(X, y)

model = SelectFromModel(fsel, prefit=True)

我正在尝试通过 ExtraTreesClassifier 训练数据集 SelectFromModel() 函数如何确定重要性值以及它返回什么?

【问题讨论】:

【参考方案1】:

SelectFromModel 的文档中所述:

阈值:字符串,浮点数,可选默认无

用于特征选择的阈值。重要性大于或等于的特征被保留,而其他特征被丢弃。如果是“median”(分别为“mean”),则阈值是特征重要性的中值(resp. the mean)。也可以使用比例因子(例如,“1.25*mean”)。如果 None 并且如果估计器的参数惩罚设置为 l1,无论是显式还是隐式(例如 Lasso),使用的阈值是 1e-5。否则,默认使用“均值”。

在您的情况下,threshold 是默认值 None,您的 ExtraTreesClassifier 中 feature_importances_ 的平均值将用作阈值。

示例

from sklearn.datasets import load_iris
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.feature_selection import SelectFromModel

iris = load_iris()
X, y  = iris.data, iris.target
clf = ExtraTreesClassifier()
model = SelectFromModel(clf)
SelectFromModel(estimator=ExtraTreesClassifier(bootstrap=False, class_weight=None, criterion='gini',
           max_depth=None, max_features='auto', max_leaf_nodes=None,
           min_impurity_decrease=0.0, min_impurity_split=None,
           min_samples_leaf=1, min_samples_split=2,
           min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=1,
           oob_score=False, random_state=None, verbose=0, warm_start=False),
        norm_order=1, prefit=False, threshold=None)
model.fit(X, y)
model.threshold_
0.25
model.estimator_.feature_importances_
array([0.09790258, 0.02597852, 0.35586554, 0.52025336])
model.estimator_.feature_importances_.mean()
0.25

如您所见,拟合模型是 SelectFromModel 的一个实例,其中 ExtraTreesClassifier 作为估计器。阈值为0.25,这也是拟合估计器的特征重要性的平均值。基于特征重要性和阈值,模型将仅保留输入数据的第 3 和第 4 特征(重要性大于阈值的特征)。您可以使用拟合的 SelectFromModel 类的transform 方法从输入数据中选择这些特征。

【讨论】:

以上是关于SelectFromModel() 如何从 from_model.py 工作?的主要内容,如果未能解决你的问题,请参考以下文章

Python - 带有朴素贝叶斯的 SelectFromModel

ValueError:使用 GridSearchCV 时估计器 SelectFromModel 的参数 C 无效

来自 sklearn 的 SelectFromModel 在随机森林和梯度提升分类器上提供了显着不同的特征

SelectFromModel scikit-learn:训练和测试阶段生成的特征矩阵维度

特征工程之特征选择----嵌入法(Embed)

如何使用 wget 从 SourceForge 下载文件?