sklearn.feature_selection.SelectFromModel利用模型筛选特征

sklearn.feature_selection.SelectFromModel模型筛选特征

以随机森林为例,查看随机森林之类的模型使用的特征。有两种使用方式:

1, 使用未训练的模型
python 复制代码
from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import RandomForestClassifier
X = [[ 0.87, -1.34,  0.31 ],
     [-2.79, -0.02, -0.85 ],
     [-1.34, -0.48, -2.55 ],
     [ 1.92,  1.48,  0.65 ]]
y = [0, 1, 0, 1]

# 输入参数包括estimator, threshold:筛选阈值, prefit=False:是否训练过,max_features:最大特征数
selector = SelectFromModel(estimator=LogisticRegression(), threshold=0.5).fit(X, y)

# 筛选的特征的阈值
selector.threshold_ # 0.5

# 特征支持的布尔表
selector.get_support() # array([False,  True, False])

# 对输入进行特征筛选
X_new = selector.transform(X)

# 查看筛选出的特征名称,需要给出特征的名称列表,如果是pandas,就可以输入x.columns
selector.get_feature_names_out(['a', 'b', 'c']) # ['b']
2, 使用训练模型
python 复制代码
from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import RandomForestClassifier
X = [[ 0.87, -1.34,  0.31 ],
     [-2.79, -0.02, -0.85 ],
     [-1.34, -0.48, -2.55 ],
     [ 1.92,  1.48,  0.65 ]]
y = [0, 1, 0, 1]


rfc = rfc=RandomForestClassifier(n_estimators=9, max_depth=6,random_state=9)
rfc.fit(X, y)
selector = SelectFromModel(rfc, prefit=True)

# 筛选的特征的阈值
selector.threshold_ # 0.55249

# 特征支持的布尔表
selector.get_support() # array([False,  True, False])

# 对输入进行特征筛选
X_new = selector.transform(X)

# 查看筛选出的特征名称,需要给出特征的名称列表,如果是pandas,就可以输入x.columns
selector.get_feature_names_out(['a', 'b', 'c']) # ['b']
相关推荐
春日见2 小时前
如何入门端到端自动驾驶?
linux·人工智能·算法·机器学习·自动驾驶
luoganttcc2 小时前
自动驾驶 世界模型 有哪些
人工智能·机器学习·自动驾驶
2401_876907523 小时前
Python机器学习实践指南
开发语言·python·机器学习
zhangfeng11336 小时前
国家超算中心 命令行是否会消耗算力卡,找不到显卡,是否需要退出
人工智能·深度学习
renhongxia17 小时前
PostTrainBench:LLM 代理能否自动化 LLM 后培训?
运维·人工智能·深度学习·机器学习·架构·自动化·transformer
吴佳浩8 小时前
Kimi 注意力残差(Attention Residuals)技术深度解读
人工智能·深度学习·llm
向哆哆8 小时前
PCB电路板缺陷检测数据集(近千张图片已划分、已标注)适用于YOLO系列深度学习检测任务
人工智能·深度学习·yolo
F_D_Z8 小时前
Stacked Generalization 堆叠泛化
人工智能·机器学习·集成学习·stacking
BB学长9 小时前
LBM vs FVM:谁才是 CFD 的未来?
人工智能·算法·机器学习