独家 | 使用Python实现机器学习特征选择的4种方法(附代码)

本文详述了使用Python Scikit-learn库实现的四种特征选择方法:单变量选择、递归特征消除(RFE)、主成分分析(PCA)以及基于特征重要度的选择。通过实例代码展示了如何在数据集上应用这些方法,以选择与目标变量最相关的特征,从而优化模型性能。在特征选择后,模型的准确性和训练时间都得到了改善。

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

640?wx_fmt=png

作者:Sugandha Lahoti

翻译:李洁

校对:杨光

本文约3500字,建议阅读13分钟。

本文中,我们将研究从数据集中选择特征的不同方法;同时通过使用Python中Scikit-learn (sklearn)库实现讨论了特征选择算法的类型。


注:本文节选自Ankit Dixit所著的《集成机器学习》(Ensemble Machine Learning)一书。这本书组合强大的机器学习算法来建立优化模型,可以作为初学者的指南。


在本文中,我们将研究从数据集中选择特征的不同方法;同时通过使用Python中Scikit-learn (sklearn)库实现讨论了特征选择算法的类型:


  • 单变量选择

  • 递归特征消除(RFE)

  • 主成分分析(PCA)

  • 选择重要特征(特征重要度)

 

我们简要介绍了前三种算法及其实现。然后我们将详细讨论在数据科学社区中广泛使用的选择重要特征(特性重要度)部分的内容。


单变量选择


统计测试可用于选择那些与输出变量关系最强的特征。


scikit-learn库提供了SelectKBest类,它可以与一组不同的统计测试一起使用,以选择特定数量的特征。


下面的例子使用chi²非负性特征的统计测试,从皮马印第安人糖尿病发病数据集中选择了四个最好的特征:


1. #Feature Extraction with Univariate Statistical Tests (Chi-squared for classification)

2. #Import the required packages

3. #Import pandas to read csv import pandas

4. #Import numpy for array related operations import numpy

5. #Import sklearn's feature selection algorithm

6. from sklearn.feature_selection import SelectKBest

7. #Import chi2 for performing chi square test from sklearn.feature_selection import chi2

8. #URL for loading the dataset

9. url ="https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians diabetes/pima-indians-diabetes.data"

10. #Define the attribute names

11. names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']

12. #Create pandas data frame by loading the data from URL

13. dataframe = pandas.read_csv(url, names=names

14. #Create array from data values

15. array = dataframe.values

16. #Split the data into input and target

17. X = array[:,  0:8]

18. Y = array[:,8]

19. #We will select the features using chi square

20. test = SelectKBest(score_func=chi2, k=4)

21. #Fit the function for ranking the features by score

22. fit = test.fit(X, Y)

23. #Summarize scores numpy.set_printoptions(precision=3) print(fit.scores_)

24. #Apply the transformation on to dataset

25. features = fit.transform(X)

26. #Summarize selected features print(features[0:5,:])


你可以看到每个参数的得分,以及所选择的四个参数(得分最高的):plas、test、mass和age。


每个特征的分数为:


1.  [111.52   1411.887 17.605 53.108  2175.565   127.669 5.393

2.   181.304]


被选出的特征是:


1. [[148. 0. 33.6 50. ]

2. [85. 0. 26.6 31. ]

3. [183. 0. 23.3 32. ]

4. [89. 94. 28.1 21. ]

5. [137. 168. 43.1 33. ]]


递归特征消除(RFE)


RFE的工作方式是递归地删除参数并在保留的参数上构建模型。它使用模型精度来判断哪些属性(以及属性的组合)对预测目标参数贡献最大。你可以在scikit-learn的文档中了解更多关于RFE类的信息。


下面的示例使用RFE和logistic回归算法来选出前三个特征。算法的选择并不重要,只需要熟练并且一致:


1. #Import the required packages

2. #Import pandas to read csv import pandas

3. #Import numpy for array related operations import numpy

4. #Import sklearn's feature selection algorithm from sklearn.feature_selection import RFE

5. 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值