当前位置: 首页> 健康> 美食 > 建筑模板是什么材料_大学生婚恋网站策划书_重庆网站seo外包_搜索引擎优化的实验结果分析

建筑模板是什么材料_大学生婚恋网站策划书_重庆网站seo外包_搜索引擎优化的实验结果分析

时间:2025/7/9 13:20:44来源:https://blog.csdn.net/weixin_37522117/article/details/142386376 浏览次数:0次
建筑模板是什么材料_大学生婚恋网站策划书_重庆网站seo外包_搜索引擎优化的实验结果分析

sklearn.feature_selection.SelectFromModel 是一种基于模型的重要性权重进行特征选择的工具,允许我们根据学习器的权重或特征重要性自动选择特征。它通过从模型中提取特征的重要性来选择特征,常用于与那些具有 coef_feature_importances_ 属性的模型结合使用,如线性模型、树模型等。

1. 语法

from sklearn.feature_selection import SelectFromModelSelectFromModel(estimator, threshold=None, prefit=False, norm_order=1, max_features=None)

2. 参数说明

  • estimator: 训练好的模型或将要拟合的模型。该模型需要具备 coef_feature_importances_ 属性,例如,线性回归、逻辑回归、决策树、随机森林等。模型通过这些属性来衡量每个特征的重要性。

  • threshold: 阈值,用来决定特征的重要性。所有权重或重要性大于该阈值的特征将被选中。可以是一个字符串(如 ‘mean’ 或 ‘median’),也可以是一个具体的数值。如果设置为 None,则默认使用 mean

    • ‘mean’: 选择权重或特征重要性大于平均值的特征。
    • ‘median’: 选择权重或特征重要性大于中位数的特征。
    • 浮点数值:选择权重或特征重要性大于该值的特征。
  • prefit: 布尔值。是否已经对模型进行过预训练。如果为 True,则直接使用已经训练好的模型,否则将在 SelectFromModel 调用 fit 方法时自动拟合模型。

  • norm_order: 规范的顺序,指定用于特征选择时 coef_ 向量的范数。对于 L1 正则化模型通常使用 1,对于 L2 正则化模型使用 2

  • max_features: 指定选择的最大特征数。如果为 None,则根据 threshold 选择所有符合条件的特征。如果指定了数值,则会选择前 max_features 个最重要的特征。

3. 返回值

  • get_support(): 返回一个布尔数组,指示哪些特征被选中(True 表示被选中)。
  • transform(X): 将输入的特征矩阵 X 转换为仅包含所选特征的新特征矩阵。
  • fit(X, y): 根据输入数据 X 和目标变量 y,拟合模型并选择特征。

4. 示例

(1) 基本用法:使用线性模型进行特征选择
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import SelectFromModel
from sklearn.datasets import load_iris# 加载数据集
X, y = load_iris(return_X_y=True)# 使用逻辑回归模型
estimator = LogisticRegression()# 创建 SelectFromModel 对象
selector = SelectFromModel(estimator=estimator)# 拟合模型并进行特征选择
selector.fit(X, y)# 查看哪些特征被选择了
print("Selected features:", selector.get_support())# 转换原始数据,保留选中的特征
X_selected = selector.transform(X)
print("Transformed shape:", X_selected.shape)

输出:

Selected features: [ True False True False]
Transformed shape: (150, 2)

在这个例子中,SelectFromModel 根据逻辑回归模型的权重选择了 2 个特征。

(2) 使用随机森林模型进行特征选择
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import SelectFromModel
from sklearn.datasets import load_iris# 加载数据集
X, y = load_iris(return_X_y=True)# 使用随机森林模型
estimator = RandomForestClassifier(n_estimators=100)# 创建 SelectFromModel 对象
selector = SelectFromModel(estimator=estimator, threshold='mean')# 拟合模型并进行特征选择
selector.fit(X, y)# 查看选择的特征
print("Selected features:", selector.get_support())# 转换原始数据
X_selected = selector.transform(X)
print("Transformed shape:", X_selected.shape)

在这里,SelectFromModel 通过随机森林的 feature_importances_ 属性进行特征选择,保留那些重要性超过平均值的特征。

(3) 使用预训练模型进行特征选择

如果我们已经预先训练了模型,可以设置 prefit=True 来跳过重新训练的步骤:

# 预训练一个模型
estimator = LogisticRegression().fit(X, y)# 使用预训练模型进行特征选择
selector = SelectFromModel(estimator=estimator, prefit=True)# 查看选择的特征
print("Selected features:", selector.get_support())# 转换原始数据
X_selected = selector.transform(X)
(4) 限制选择的最大特征数量

我们可以使用 max_features 来限制选择的特征数量:

selector = SelectFromModel(estimator=estimator, max_features=2, threshold=-np.inf)# 拟合模型并进行特征选择
selector.fit(X, y)# 查看选择的特征
print("Selected features:", selector.get_support())

这里我们通过设置 threshold=-np.inf 选择了权重最大的两个特征。

5. 应用场景

  • 降维: SelectFromModel 可以通过减少不重要的特征来进行降维,提高模型的性能和泛化能力。
  • 特征选择: 利用模型的权重或特征重要性来选择对目标变量最有贡献的特征。
  • 自动化特征选择: 可以在构建模型时自动选择特征,特别适用于模型构建过程中自动化流水线的使用。

6. 注意事项

  • 依赖于模型的 coef_feature_importances_: SelectFromModel 依赖于所使用的模型具有 coef_(线性模型)或 feature_importances_(树模型等)属性。
  • 阈值选择: 选择适当的 threshold 参数对结果影响较大。可以使用 meanmedian 等动态值,或者根据数据实验确定一个具体的阈值。

7. 与其他特征选择方法的对比

  • RFE 的对比: SelectFromModel 直接根据特征的重要性进行选择,而 RFE 是通过递归地消除不重要的特征逐步选择。SelectFromModel 更直接,适合模型对特征重要性有直接衡量的情况。
  • SelectKBest 的对比: SelectKBest 是基于统计检验选择前 k 个最好的特征,而 SelectFromModel 是基于模型的重要性选择特征。

SelectFromModel 提供了一种简单有效的特征选择方法,特别适合与线性模型和决策树类模型结合使用。

关键字:建筑模板是什么材料_大学生婚恋网站策划书_重庆网站seo外包_搜索引擎优化的实验结果分析

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: