前面通过一些小案例介绍了PCA降维的参数和属性,最后我们来做一个综合案例,对Sklean数字数据集进行降维,然后用随机森林和KNN两种方式,来做一个交叉验证。
1、导入数据集
from sklearn.datasets import load_digits digits = load_digits() x = digits.data y = digits.target
2、PCA调参
通过累计百分比可以看出,40个特征值左右,就能提取90%以上的特征,所以选择降到40维,如果要更细化,可以缩小范围,进一步调参。
from sklearn.decomposition import PCA import matplotlib.pyplot as plt import numpy as np pca = PCA().fit(x) ratios = pca.explained_variance_ratio_ plt.plot(range(len(ratios)), np.cumsum(ratios)) plt.show()
3、PCA降维
x_dr = PCA(40).fit_transform(x) print(x_dr.shape) #(1797, 40)
4、逻辑森林
from sklearn.ensemble import RandomForestClassifier as RFC from sklearn.model_selection import cross_val_score score = cross_val_score(RFC(random_state=42), x_dr, y, cv=10).mean() print(score) #0.941
5、KNN
from sklearn.neighbors import KNeighborsClassifier as KNN score = cross_val_score(KNN(), x_dr, y, cv=10).mean() print(score) #0.972
由以上对比实验可以看出,PCA降维到40之后,再用逻辑森林和KNN进行分类,KNN效果比逻辑森林的效果更好,所以要提高分类准确率,除了特征提取外,模型选择也很重要。
本文为 陈华 原创,欢迎转载,但请注明出处:http://edu.ichenhua.cn/read/278
- 上一篇:
- 数据结构之双向队列及tail函数
- 下一篇:
- 数据结构之用栈解迷宫问题