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/

10-12 19:29