scikit-learn中的PCA
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相关推荐
- 机器学习与Scikit Learn学习库
摘要: 本文介绍机器学习相关的学习库Scikit Learn,包含其安装及具体识别手写体数字案例,适合机器学习初学者入门Scikit Learn. 在我科研的时候,机器学习(ML)是计算机科学领域中最 ...
- Scikit Learn: 在python中机器学习
Warning 警告:有些没能理解的句子,我以自己的理解意译. 翻译自:Scikit Learn:Machine Learning in Python 作者: Fabian Pedregosa, Ga ...
- [转载]Scikit Learn: 在python中机器学习
原址:http://my.oschina.net/u/175377/blog/84420 目录[-] Scikit Learn: 在python中机器学习 载入示例数据 一个改变数据集大小的示例:数码 ...
- python笔迹识别_python_基于Scikit learn库中KNN,SVM算法的笔迹识别
之前我们用自己写KNN算法[网址]识别了MNIST手写识别数据 [数据下载地址] 这里介绍,如何运用Scikit learn库中的KNN,SVM算法进行笔迹识别. 数据说明: 数据共有785列,第一列 ...
- scikit - learn 做文本分类
文章来源: https://my.oschina.net/u/175377/blog/84420 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的句子,我以自 ...
- 【scikit-learn】如何用Python和SciKit Learn 0.18实现神经网络
本教程的代码和数据来自于 Springboard 的博客教程.本文的作者为 Jose Portilla,他是网络教育平台 Udemy 一门数据科学类课程的讲师. GitHub 链接:https://g ...
- python scikit learn 关闭开源_scikit learn 里没有神经网络?
本教程的代码和数据来自于 Springboard 的博客教程,希望能为你提供帮助.作者为 Jose Portilla,他是网络教育平台 Udemy 一门数据科学类课程的讲师. GitHub 链接:ht ...
- pca主成分分析结果解释_SKLEARN中的PCA(Principal Component Analysis)主成分分析法
PCA(Principal Component Analysis)主成分分析法是机器学习中非常重要的方法,主要作用有降维和可视化.PCA的过程除了背后深刻的数学意义外,也有深刻的思路和方法. 1. 准 ...
- 生信中的PCA ,PCoA
生信中的PCA ,PCoA PCA和PCOA都是降维处理数据集,只不过前者是主成分分析后者是主坐标分析.不过在生信分析中都是用来查看样本之间的相似性或者差异性. 首先要明白一个道理,为什么生信中要进行 ...
最新文章
- 结构 win32_COM编程攻略(十五 持久化与结构化存储)
- 北京地区的网络人口调查
- css 样式三元运算_20条书写CSS代码的建议
- 支持drupal的空间
- 南京师范大学计算机科学与技术复试名单,2018年各学院硕士研究生复试办法及复试名单公示网址汇总表...
- std::map的KEY如果是char*,必须是malloc的
- Linux 查找满足条件的文件并复制
- Vue2在使用Element-UI的分页组件遇到的问题(如PageSize,PageNum等)
- 超键、候选键、主键区别?
- 如果你的 pip 命令不能用,你可以这样解决
- Tire树(字典树)
- vi/vim/gvim编辑器使用心得
- 耕作方式对微生物群落的影响
- AtCoder Beginner Contest 285解题报告
- 按PEP8风格自动排版Python代码
- Opensource.com的领导层和社区是什么样的
- Kubernetes Pod垂直自动伸缩(VPA)
- linux每日命令(23):find命令之xargs
- 基于I.MX6UL平台的WIFI模块AP6214A 驱动移植
- Netflix Hystrix断路器简介与工作原理
热门文章
- 桌面远程控制计算机名字和,Win7系统远程控制其他计算机桌面教程
- jsapi设计_Sketch插件如何架构
- Druid java.sql.SQLException: connection holder is null
- SAP FI CO模块常用事务代码
- Java反射之Filed(类中的属性对象)
- PM如何写好产品需求文档
- 压力测试软件 loadr,初学abench压力测试 - 玄大冰 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
- 思科tar格式IOS升级方法
- SaaSBase:免费的思维导图软件:2022年9种最好的工具
- java中遍历Set的方法