scikit-learn中的PCA

  • 使用sklearn中的PCA步骤
    • 初始化pca
    • 进行训练集的拟合
    • 均值归零化
  • 对MNIST手写数据集进行降维并预测
    • 不降维直接预测
    • 降维后预测

使用sklearn中的PCA步骤

初始化pca

官方给出的形参列表

  • n_components:>=1时表示想要求得的主成分个数,传入小于1的float类型,表示保留下的主成分的特征保留度

初始化保留前两个主成分

from sklearn.decomposition import PCApca = PCA(n_components=2)

保留下95%的特征

pca = PCA(0.95)

进行训练集的拟合

使用PCA.fit()函数进行数据的拟合

pca.fit(X_train)

均值归零化

使用PCA.transform()对数据进行均值归零

X_train_reduction = pca.transform(X_train)

至此,我们就完成了最基础的PCA降维过程,接下来,我们运用到MNIST手写数据集中进行预测

对MNIST手写数据集进行降维并预测

不降维直接预测

首先,我们先加载MNIST手写数据集

import numpy as np
from sklearn.datasets import fetch_openml
mnist = fetch_openml("mnist_784")

由于mnist数据集已经为训练和测试集分好类了,我们直接取前60000个当训练集,其余当测试集就可以了

X_train = np.array(X[:60000], dtype = float)
y_train = np.array(y[:60000], dtype = float)
X_test = np.array(X[60000:], dtype = float)
y_test = np.array(y[60000:], dtype = float)

这里,我们使用kNN方法对数据进行预测
我们先用kNN对所有数据集进行训练和预测

from sklearn.neighbors import KNeighborsClassifierknn_clf = KNeighborsClassifier()
%time knn_clf.fit(X_train, y_train)
%time knn_clf.score(X_test, y_test)

运行结果:

这里最近kNN算法应该是有改进过的,速度优化了很多

接下来,我们通过降维,再通过kNN进行预测

降维后预测

这里,我们选取90%的特征精度,进行降维的过程和上述介绍的过程是一样的

from sklearn.decomposition import PCApca = PCA(0.9)
pca.fit(X_train)
X_train_reduction = pca.transform(X_train)

我们可以查看一下降维后的X_train的shape

减少了700个特征,可以极大优化我们的计算复杂度

我们再对降维后的数据进行训练和预测:

knn_clf = KNeighborsClassifier()
%time knn_clf.fit(X_train_reduction, y_train)
X_test_reduction = pca.transform(X_test)
%time knn_clf.score(X_test_reduction, y_test)

运行结果:

时间确实是有明显的提升的,同时,预测精度还提高了。因为,降维的过程中,我们还可以减少数据的噪声。

scikit-learn中的PCA相关推荐

  1. 机器学习与Scikit Learn学习库

    摘要: 本文介绍机器学习相关的学习库Scikit Learn,包含其安装及具体识别手写体数字案例,适合机器学习初学者入门Scikit Learn. 在我科研的时候,机器学习(ML)是计算机科学领域中最 ...

  2. Scikit Learn: 在python中机器学习

    Warning 警告:有些没能理解的句子,我以自己的理解意译. 翻译自:Scikit Learn:Machine Learning in Python 作者: Fabian Pedregosa, Ga ...

  3. [转载]Scikit Learn: 在python中机器学习

    原址:http://my.oschina.net/u/175377/blog/84420 目录[-] Scikit Learn: 在python中机器学习 载入示例数据 一个改变数据集大小的示例:数码 ...

  4. python笔迹识别_python_基于Scikit learn库中KNN,SVM算法的笔迹识别

    之前我们用自己写KNN算法[网址]识别了MNIST手写识别数据 [数据下载地址] 这里介绍,如何运用Scikit learn库中的KNN,SVM算法进行笔迹识别. 数据说明: 数据共有785列,第一列 ...

  5. scikit - learn 做文本分类

    文章来源: https://my.oschina.net/u/175377/blog/84420 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的句子,我以自 ...

  6. 【scikit-learn】如何用Python和SciKit Learn 0.18实现神经网络

    本教程的代码和数据来自于 Springboard 的博客教程.本文的作者为 Jose Portilla,他是网络教育平台 Udemy 一门数据科学类课程的讲师. GitHub 链接:https://g ...

  7. python scikit learn 关闭开源_scikit learn 里没有神经网络?

    本教程的代码和数据来自于 Springboard 的博客教程,希望能为你提供帮助.作者为 Jose Portilla,他是网络教育平台 Udemy 一门数据科学类课程的讲师. GitHub 链接:ht ...

  8. pca主成分分析结果解释_SKLEARN中的PCA(Principal Component Analysis)主成分分析法

    PCA(Principal Component Analysis)主成分分析法是机器学习中非常重要的方法,主要作用有降维和可视化.PCA的过程除了背后深刻的数学意义外,也有深刻的思路和方法. 1. 准 ...

  9. 生信中的PCA ,PCoA

    生信中的PCA ,PCoA PCA和PCOA都是降维处理数据集,只不过前者是主成分分析后者是主坐标分析.不过在生信分析中都是用来查看样本之间的相似性或者差异性. 首先要明白一个道理,为什么生信中要进行 ...

最新文章

  1. 结构 win32_COM编程攻略(十五 持久化与结构化存储)
  2. 北京地区的网络人口调查
  3. css 样式三元运算_20条书写CSS代码的建议
  4. 支持drupal的空间
  5. 南京师范大学计算机科学与技术复试名单,2018年各学院硕士研究生复试办法及复试名单公示网址汇总表...
  6. std::map的KEY如果是char*,必须是malloc的
  7. Linux 查找满足条件的文件并复制
  8. Vue2在使用Element-UI的分页组件遇到的问题(如PageSize,PageNum等)
  9. 超键、候选键、主键区别?
  10. 如果你的 pip 命令不能用,你可以这样解决
  11. Tire树(字典树)
  12. vi/vim/gvim编辑器使用心得
  13. 耕作方式对微生物群落的影响
  14. AtCoder Beginner Contest 285解题报告
  15. 按PEP8风格自动排版Python代码
  16. Opensource.com的领导层和社区是什么样的
  17. Kubernetes Pod垂直自动伸缩(VPA)
  18. linux每日命令(23):find命令之xargs
  19. 基于I.MX6UL平台的WIFI模块AP6214A 驱动移植
  20. Netflix Hystrix断路器简介与工作原理

热门文章

  1. 桌面远程控制计算机名字和,Win7系统远程控制其他计算机桌面教程
  2. jsapi设计_Sketch插件如何架构
  3. Druid java.sql.SQLException: connection holder is null
  4. SAP FI CO模块常用事务代码
  5. Java反射之Filed(类中的属性对象)
  6. PM如何写好产品需求文档
  7. 压力测试软件 loadr,初学abench压力测试 - 玄大冰 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  8. 思科tar格式IOS升级方法
  9. SaaSBase:免费的思维导图软件:2022年9种最好的工具
  10. java中遍历Set的方法