这是我的第268篇原创文章。
一、引言
递归特征消除(RFE)是一种高效的特征选择方法,它通过递归减少特征的数量来找出模型最重要的特征。本文基于支持向量机分类器作为选择器的基模型,采用递归消除法进行特征筛选。
二、实现过程
2.1 准备数据
data = pd.read_csv(r'dataset.csv')
df = pd.DataFrame(data)
2.2 目标变量和特征变量
target = 'target'
features = df.columns.drop(target)
特征变量如下:
2.3 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(df[features], df[target], test_size=0.2, random_state=0)
X_train如下:
2.4 创建随机森林分类器作为选择器的基模型
model = SVC(kernel="linear", C=1)
2.5 定义RFE模型
selector = RFE(estimator=model, n_features_to_select=1, step=1)
selector.fit(X_train, y_train)
选择保留1个最重要的特征。
2.6 获取特征排名
# 获取特征排名
feature_ranking = selector.ranking_
# 创建特征排名的DataFrame
ranking_df = pd.DataFrame({'Feature': features, 'Ranking': feature_ranking})
ranking_df如下:
2.7 对特征重要性进行排序
ranking_df = ranking_df.sort_values(by='Ranking')
排序后的 ranking_df如下:
2.8 可视化特征重要性
plt.figure(figsize=(10, 6))
sns.barplot(x='Importance', y='Feature', data=importance_df)
plt.title('Feature Importance')
plt.xlabel('Importance')
plt.ylabel('Feature')
plt.show()
可视化结果如下:
在 RFE 方法中,通过递归地移除权重(或重要性)最小的特征,然后在剩余的特征上重新训练模型,从而得到每个特征的排名。这个过程中,特征被移除的顺序反映了它们对模型性能影响的重要性,排名1表示该特征是最后被移除的,即在模型中被视为最重要的特征。
作者简介:
读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。