fsel = ske.ExtraTreesClassifier().fit(X, y)
model = SelectFromModel(fsel, prefit=True)
我正在尝试通过ExtraTreesClassifier训练数据集,功能SelectFromModel()如何确定重要性值,它返回什么?
最佳答案
如SelectFromModel
文档中所述:
阈值:字符串,浮点型,可选默认值无
用于特征选择的阈值。保留重要性更高或相等的要素,而其他要素则被丢弃。如果为“中位数”(分别为“平均值”),则阈值为特征重要性的中位数(分别为平均值)。也可以使用缩放因子(例如,“ 1.25 *平均值”)。如果为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
,这也是拟合估计量的特征重要性的平均值。基于特征重要性和阈值,模型将仅保留输入数据的第三和第四特征(那些重要性大于阈值的特征)。您可以使用适合的SelectFromModel类的transform
方法从输入数据中选择这些功能。关于machine-learning - SelectFromModel()如何从from_model.py工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51290659/