特征选择——变量重要性排序

本文介绍了如何使用决策树和随机森林进行特征选择,并详细探讨了基于相关性的特征选择方法CFS,强调CFS通过评估特征与类别的相关性和特征间的不相关性来寻找最优特征子集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.利用决策树进行排序

步骤

  • 导入数据;
  • 建模
  • 训练
  • 获取变量重要性得分
from sklearn.tree import DecisionTreeClassifier
import numpy as np
from sklearn.datasets import load_wine
from model_selection import train_test_split
data = load_wine()  # 下载数据
'''data.data.shape	#数据变量
->	(178, 13)
	data.target # 类别
'''
X_train, X_test, Y_train, Y_test = train_test_split(data.data,data.target,random_state=33)
model = DecisionTreeClassifier(random_state=2)
model.fit(X_train,Y_train)
features_importance = model.feature_importances_
# 重要性排序降序
indices = np.argsort(features_importance)[::-1])
# 返回排序后的下标,并取前几个重要的特征
importance = indices[:3]
print(X_train[:,importance])

2. 利用随机森林进行变量选择

from sklearn.ensemble import RandomForestClassifier as RF
import numpy as np
from sklearn.datasets import load_wine
from model_selection import train_test_split
data = load_wine()  # 下载数据
'''data.data.shape	#数据变量
->	(178, 13)
	data.target # 类别
'''
X_train, X_test, Y_train, Y_test = train_test_split
### 如何在Python机器学习中对特征重要性进行排序 为了评估模型中的各个特征的重要性并对其进行排序,可以利用训练好的梯度提升机(Gradient Boosting Machine, GBM)或其他支持计算特征重要性的算法。通常这些模型会提供一个属性来获取每个特征的重要程度得分。 对于GBM,在完成参数调优之后,可以直接访问`feature_importances_`属性获得各输入变量对应的重要性分数[^1]。下面展示一段代码用于加载数据集、构建模型以及提取和排序特征重要性: ```python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import GradientBoostingClassifier # 加载CSV文件的数据,并查看前五行结构 features = pd.read_csv('temps.csv') print(features.head(5)) # 假设最后一列为标签列,其余为特征列;这里仅作示意 X = features.iloc[:, :-1].values y = features.iloc[:, -1].values # 将数据分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # 创建GBM分类器实例并拟合数据 gbm_model = GradientBoostingClassifier() gbm_model.fit(X_train, y_train) # 获取特征名称列表 feature_names = list(features.columns[:-1]) # 提取特征重要性和对应的索引 importance_scores = gbm_model.feature_importances_ indices_sorted_by_importance = importance_scores.argsort()[::-1] # 打印按降序排列的特征及其权重 for index in indices_sorted_by_importance: print(f"{feature_names[index]}: {importance_scores[index]:.4f}") ``` 这段脚本首先读入了一个名为`temps.csv`的数据表单作为例子,接着通过`train_test_split()`函数划分了训练样本与验证样本。随后定义了一个基于随机森林或GBDT等集成方法建立起来的学习器对象——在这里选择了`GradientBoostingClassifier`类创建了一个GBM分类器。最后部分则是核心操作:从已训练完毕的对象里取出`feature_importances_`成员变量所保存的信息量指标向量,再按照数值大小反向排序得到最终的结果输出形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值