博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sklearn中调用PCA算法
阅读量:4551 次
发布时间:2019-06-08

本文共 2696 字,大约阅读时间需要 8 分钟。

sklearn中调用PCA算法

PCA算法是一种数据降维的方法,它可以对于数据进行维度降低,实现提高数据计算和训练的效率,而不丢失数据的重要信息,其sklearn中调用PCA算法的具体操作和代码如下所示:

#sklearn中调用PCA函数进行相关的训练和计算(自定义数据) import  numpy as np import matplotlib.pyplot as plt x=np.empty((100,2)) x[:,0]=np.random.uniform(0.0,100.0,size=100) x[:,1]=0.75*x[:,0]+3.0*np.random.normal(0,3,size=100) plt.figure() plt.scatter(x[:,0],x[:,1]) plt.show() from sklearn.decomposition import PCA    #在sklearn中调用PCA机器学习算法 pca=PCA(n_components=1)                  #定义所需要分析主成分的个数n pca.fit(x)                               #对基础数据集进行相关的计算,求取相应的主成分 print(pca.components_)                    #输出相应的n个主成分的单位向量方向 x_reduction=pca.transform(x)                #进行数据的降维 x_restore=pca.inverse_transform(x_reduction)       #对降维数据进行相关的恢复工作 plt.figure() plt.scatter(x[:,0],x[:,1],color="g") plt.scatter(x_restore[:,0],x_restore[:,1],color="r") plt.show() #sklearn中利用手写字体的数据集进行实际的PCA算法 #1-1导入相应的库函数 from sklearn import datasets d=datasets.load_digits() x=d.data y=d.target from sklearn.model_selection import train_test_split x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=666) print(x_train.shape) from sklearn.neighbors import KNeighborsClassifier knn=KNeighborsClassifier() knn.fit(x_train,y_train) print(knn.score(x_test,y_test)) #1-2对于64维的原始数据进行降维,降到2维数据 pca1=PCA(n_components=2) pca1.fit(x_train) x_train_re=pca1.transform(x_train)    #对于训练数据和测试数据进行降维到二维数据 x_test_re=pca1.transform(x_test) knn1=KNeighborsClassifier() knn1.fit(x_train_re,y_train)             #再对降维到的二维数据进行KNN算法的训练和测试准确度 print(knn1.score(x_test_re,y_test)) print(pca1.explained_variance_ratio_) #1-3-1对于训练数据和测试数据进行降维到64维数据,维度不变 pca2=PCA(n_components=64)             #对于训练数据和测试数据进行降维到64维数据,维度不变 pca2.fit(x_train) x_train_re=pca2.transform(x_train) x_test_re=pca2.transform(x_test) knn1=KNeighborsClassifier() knn1.fit(x_train_re,y_train) print(knn1.score(x_test_re,y_test)) print(pca2.explained_variance_ratio_)           #输出各个主成分对于整体数据的方差的体现比例 #1-3-2输出前n个主成分所能够反映的数据的特征权重 plt.figure() plt.plot([i for i in range(x.shape[1])],[np.sum(pca2.explained_variance_ratio_[:i+1]) for i in range(x.shape[1])]) plt.show() #1-4PCA(a)括号里面的a为0-1的数字,表示输出满足能够反映原始数据比重为a时的最低维度时的PCA,之后进行训练和分类会提高计算的效率5-10倍,但是分类准确度基本相差无几,可以用准确度来换取计算的效率 pca3=PCA(0.95) pca3.fit(x_train) print(pca3.n_components_)  #输出此时降到的数据维度 x_train_re1=pca3.transform(x_train) x_test_re1=pca3.transform(x_test) knn2=KNeighborsClassifier() knn2.fit(x_train_re1,y_train) print(knn2.score(x_test_re1,y_test)) #1-5对于64维度数据进行降维到二维数据,之后进行数据的可视化,可以对于不同的分类结果进行查询和可视化区分 pca1=PCA(n_components=2) pca1.fit(x) x_re=pca1.transform(x) plt.figure() for i in range(10):     plt.scatter(x_re[y==i,0],x_re[y==i,1]) plt.show() 输出结果如下所示:

 

 

转载于:https://www.cnblogs.com/Yanjy-OnlyOne/p/11325330.html

你可能感兴趣的文章
键盘控制div移动并且解决停顿问题(原生js)
查看>>
矩阵快速幂优化线性递推
查看>>
基础网络流学习笔记
查看>>
Linux文件夹文件创建、删除
查看>>
归并排序 稳定
查看>>
xml约束技术之dtd
查看>>
云存储的那些事(1)——数据冗余
查看>>
android状态机机制StateMachine
查看>>
滚动条自适应宽度的问题
查看>>
第二次作业——个人项目实战
查看>>
HighCharts图表控件在ASP.NET WebForm中的使用
查看>>
C#汉字转拼音
查看>>
Remote Service 和 Local App的交互
查看>>
用python实现最长公共子序列算法(找到所有最长公共子串)
查看>>
正则表达式
查看>>
tensorflow models flags 初步使用
查看>>
[.NET] SQL数据分页查询
查看>>
[转]Ext自定义vtype动态验证
查看>>
Java - Java Web - Listener
查看>>
K3Cloud 后台修改账户密码策略
查看>>