一、数据

  • 获取数据
    import numpy as np
    from sklearn.datasets import fetch_mldata mnist = fetch_mldata("MNIST original")
  1. sklearn 的 datasets 中,一个特有的方法:fetch_mldata,使用此方法可以直接从一个官方网站中下载各种机器学习数据;
  2. 格式:datas = fetch_mldata("字符串");
  • 查看数据
    mnist
    # 输出:
    {'COL_NAMES': ['label', 'data'],
    'DESCR': 'mldata.org dataset: mnist-original',
    'data': array([[0, 0, 0, ..., 0, 0, 0],
    [0, 0, 0, ..., 0, 0, 0],
    [0, 0, 0, ..., 0, 0, 0],
    ...,
    [0, 0, 0, ..., 0, 0, 0],
    [0, 0, 0, ..., 0, 0, 0],
    [0, 0, 0, ..., 0, 0, 0]], dtype=uint8),
    'target': array([0., 0., 0., ..., 9., 9., 9.])}
  1. mnist 是一个字典:'COL_NAMES'、'DESCR'、'data'、'target';
  2. 'DESCR':表示 MNIST 数据集所在的网站;
  • 处理数据
    X, y = mnist['data'], mnist['target']
    
    X.shape
    # 输出:(70000, 784) 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)
  1. 此处没有进行数据归一化处理,因为现在的样本数据整体来说都表示图像中相应的一个像素点的亮度,也就是说,虽然整体数据没有进行归一化处理,但他们还在同一个尺度上,所以此数据集不需要进行归一化处理;
  2. 数据归一化的主要意义:当数据的尺度不同时,要把数据放在同一个尺度上;

二、算法

  • 使用 kNN 算法进行识别操作(数据不降维)
    from sklearn.neighbors import KNeighborsClassifier
    
    knn_clf = KNeighborsClassifier()
    %time knn_clf.fit(X_train, y_train)
    # 输出:44.9 s knn_clf.score(X_test, y_test)
    # 输出:0.9688
  1. kNN 算法中还需要进行调参:k、weight
  • 使用 kNN算法进行识别操作(PCA降维数据)
    from sklearn.decomposition import PCA
    
    # 只保留样本的 90% 的信息
    pca = PCA(0.9) pca.fit(X_train)
    X_train_reduction = pca.transform(X_train) X_train_reduction.shape
    # 输出:(60000, 87) knn_clf = KNeighborsClassifier()
    %time knn_clf.fit(X_train_reduction, y_train)
    # 输出:602 s X_test_reduction = pca.transform(X_test)
    %time knn_clf.score(X_test_reduction, y_test)
    # 输出:1 min 27 s 0.9728
  1. PCA(0.9):只保留样本的 90% 的信息,也就是能解释 90% 原是数据方差的前 n 个主成分;
  2. (60000, 87):将样本从 784 维,降低至 87 维,保留了样本 90% 的信息;
  • 分析:数据使用 PCA 降维前后的效果
  1. 现象:识别准确度提高了,预测时间缩短了;
  2. 使用 PCA 将数据降维后的优点:识别准确度提高了,预测时间缩短了,减小了数据和存储空间;
  3. 疑问:为什么 PCA 的过程中丢失了 10% 的信息,识别准确度反而提高了?
  4. 答疑:实际上 PCA 这个过程中,不仅仅对原始数据进行了降维,更有可能在降维的过程中将原有的数据所包含的噪音消除了,使得数据集中更好的特征,以至于识别准确率得到提升;

机器学习:PCA(实例:MNIST数据集)的更多相关文章

  1. 机器学习与Tensorflow(3)—— 机器学习及MNIST数据集分类优化

    一.二次代价函数 1. 形式: 其中,C为代价函数,X表示样本,Y表示实际值,a表示输出值,n为样本总数 2. 利用梯度下降法调整权值参数大小,推导过程如下图所示: 根据结果可得,权重w和偏置b的梯度 ...

  2. 机器学习-MNIST数据集使用二分类

    一.二分类训练MNIST数据集练习 %matplotlib inlineimport matplotlibimport numpy as npimport matplotlib.pyplot as p ...

  3. 从零到一:caffe-windows(CPU)配置与利用mnist数据集训练第一个caffemodel

    一.前言 本文会详细地阐述caffe-windows的配置教程.由于博主自己也只是个在校学生,目前也写不了太深入的东西,所以准备从最基础的开始一步步来.个人的计划是分成配置和运行官方教程,利用自己的数 ...

  4. 【转载】用Scikit-Learn构建K-近邻算法,分类MNIST数据集

    原帖地址:https://www.jiqizhixin.com/articles/2018-04-03-5 K 近邻算法,简称 K-NN.在如今深度学习盛行的时代,这个经典的机器学习算法经常被轻视.本 ...

  5. Tensorflow MNIST 数据集测试代码入门

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50614444 测试代码已上传至GitH ...

  6. Tensorflow MNIST 数据集測试代码入门

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50614444 測试代码已上传至GitH ...

  7. MNIST 数据集介绍

    在学习机器学习的时候,首要的任务的就是准备一份通用的数据集,方便与其他的算法进行比较. MNIST数据集是一个手写数字数据集,每一张图片都是0到9中的单个数字,比如下面几个:     MNIST数据库 ...

  8. mnist 数据集的识别源码解析

    在基本跑完识别代码后,再来谈一谈自己对代码的理解: 1      前向传播过程文件(mnist_forward.py) 第一个函数get_weight(shape, regularizer); 定义了 ...

  9. Python读取MNIST数据集

    MNIST数据集获取 MNIST数据集是入门机器学习/模式识别的最经典数据集之一.最早于1998年Yan Lecun在论文: Gradient-based learning applied to do ...

随机推荐

  1. NorFlash、NandFlash、eMMC比较区别【转】

    本文转载自:http://www.veryarm.com/1200.html 快闪存储器(英语:Flash Memory),是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器. ...

  2. linux下bwa和samtools的安装与使用

    bwa的安装流程安装本软体总共需要完成以下两个软体的安装工作:1) BWA2) Samtools 1.BWA的安装a.下载BWA (download from BWA Source Forge ) h ...

  3. 创建表空间及用户的SQL

    --创建表SOFA空间: CREATE SMALLFILE TABLESPACE "SOFA" DATAFILE 'G:\oracle\product\10.2.0\ORADATA ...

  4. Effective java第一章引言

    菜鸟一枚,开始读第一本书<Effective Java>(第二版)~ 看引言就有好多名词不懂(>_<) 导出的API由所有可在定义该API的包之外访问的API元素组成.一个包的 ...

  5. vue-cli入门之项目结构分析

    一个vue-cli的项目结构如下,其中src文件夹是需要掌握的,所以本文也重点讲解其中的文件,至于其他相关文件,了解一下即可. 文件结构细分 1.build——[webpack配置] build文件主 ...

  6. SGU 106 The equation 扩展欧几里德

    106. The equation time limit per test: 0.25 sec. memory limit per test: 4096 KB There is an equation ...

  7. struct2学习

    struct1和webwork产生Struts2. struts2每次访问必定创建一个action,struts1只要一个action对象. Url中动态方法调用DMI 约定优于配置.miamhuai ...

  8. Respond.js的作用

    在html页面中我们经常看到 <!--[if lt IE 9]>    //判断当前浏览器的版本是否小于IE 9          <script src="https:/ ...

  9. C# WPF DataGrid 隔行变色及内容居中对齐

    C# WPF DataGrid 隔行变色及内容居中对齐. dqzww NET学习0     先看效果: 前台XAML代码: <!--引入样式文件--> <Window.Resourc ...

  10. 我总结的js变量、数组、对象等基础知识

    我的第一篇博客 ——JS的那些基础概念 第一次写,也不知道有没有什么套路,需不需要注意文采之类的.不管了,我就直接写主要内容吧!下面是我总结的一些关于JS的基础概念: [变量]从字面上面,变量是可变的 ...