《机器学习python实践》书本上给出了源码地址:https://github.com/weizy1981/MachineLearning
特征选择
特征选择的作用:降低数据拟合度,提高算法精度,减少训练时间。
四种特征选择方法:
1.单变量特征选定
统计分析可以用来分析选择对结果影响最大的数据特征。卡方检验是统计样本的实际观测值和理论推断值之间的偏离程度。偏离程度决定了卡方值的大小,卡方值越大,越不符合;卡方值越小,偏差越小,越趋于符合。
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
from numpy import set_printoptions
#单变量特征选择
test=SelectKBest(score_func=chi2,k=4)
fit=test.fit(X,Y)
set_printoptions(precision=3)
print(fit.scores_)
features=fit.transform(X)
print(features)
2. 递归特征选定
递归特征消除使用一个基模型来进行多轮训练,每一轮训练后消除若干权值系数的特征,再基于新的特征集进行下一轮的训练。
#递归特征消除
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import RFE
#特征选定
model=LogisticRegression()
rfe=RFE(model,3)
fit=rfe.fit(X,Y)
print("特征个数:")
print(fit.n_features_)
print("被选定的特征:")
print(fit.support_)
print('特征排名:')
print(fit.ranking_)
3. 主成分分析
主成分分析PCA使用线性代数来转换压缩数据,又称为数据降维。
常见的数据降维方法除了PCA,还有线性判别分析LDA。
#PCA
from sklearn.decomposition import PCA
pca=PCA(n_components=3)
fit = pca.fit(X)
print("解释方差为:%s" % fit.explained_variance_ratio_)
print(fit.components_)
4. 特征的重要性
袋装决策树算法、随机森林和计算随机树算法都可以用来计算数据特征的重要性。
#ExtraTreesClassifier
from sklearn.ensemble import ExtraTreesClassifier
model=ExtraTreesClassifier()
fit=model.fit(X,Y)
print(fit.feature_importances_)
参考《机器学习python实践》,魏贞原,2018.