如何使用from_model.py中的SelectFromModel()?

fsel = ske.ExtraTreesClassifier().fit(X, y)model = SelectFromModel(fsel, prefit=True)

我正在尝试使用ExtraTreesClassifier训练数据集。函数SelectFromModel()如何决定特征的重要性值,并返回什么?


回答:

SelectFromModel的文档中所述:

threshold : string, float, optional default None

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

在你的例子中,threshold是默认值None,将使用你的ExtraTreesClassifier中feature_importances_的均值作为阈值。

示例

from sklearn.datasets import load_irisfrom sklearn.ensemble import ExtraTreesClassifierfrom sklearn.feature_selection import SelectFromModeliris = load_iris()X, y  = iris.data, iris.targetclf = 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)print(model.threshold_)#0.25print(model.estimator_.feature_importances_)#array([0.09790258, 0.02597852, 0.35586554, 0.52025336])print(model.estimator_.feature_importances_.mean())#0.25

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

Related Posts

在使用k近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注