一、数据

  • 获取数据
    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. Threalocal的使用及其原理

    虽然现在可以说很多程序员会用ThreadLocal,但是我相信大多数程序员还不知道ThreadLocal,而使用ThreadLocal的程序员大多只是知道其然而不知其所以然,因此,使用ThreadLo ...

  2. 【转载】Android端百度地图API使用详解

    转载地址:http://www.cnblogs.com/rocomp/p/4994110.html 百度地图API简介 百度地图移动版API(Android)是一套基于Android设备的应用程序接口 ...

  3. springmvc返回视图(解析)

    1.什么是视图? 视图就是展示给用户看的结果.可以是很多形式,例如:html.JSP.excel表单.Word文档.PDF文档.JSON数据.freemarker模板视图等等. 2.传统JSP和JST ...

  4. matlab第一个小应用

    今天安装了matlab,以前还是上线性代数的时候,老师让用过,以及水了一次数模的时候玩了一下.以前太年轻,总觉得这个用处不大虽然别人一直强调这个神器... 到了自己要用的时候才会意识到.大家可能也都听 ...

  5. 通过代码或者配置文件 对log4net进行配置

    1.通过代码进行配置 1.1代码 http://stackoverflow.com/questions/16336917/can-you-configure-log4net-in-code-inste ...

  6. sqlserver ,镜像数据库,CDC,实时监控数据变化

    1.数据库镜像配置 1)主机环境:计算机名称修改SQL1.xiaoping.com 添加用户sqluser 密码永不变,率属于administrators sqlserver安装时,将所有sqlser ...

  7. linux基础(10)-导航菜单

    导航菜单实战 例:编写一个shell脚本,包含多个菜单,其中需要一个退出选项:可单选也可多选:根据序号选择后,显示所选菜单名称. #!/bin/bash ####################### ...

  8. Spring data jpa 实现简单动态查询的通用Specification方法

    本篇前提: SpringBoot中使用Spring Data Jpa 实现简单的动态查询的两种方法 这篇文章中的第二种方法 实现Specification 这块的方法 只适用于一个对象针对某一个固定字 ...

  9. hdoj1005--Number Sequence

    Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1 ...

  10. CDN,内容分发网络。

    CDN,内容分发网络. 就近获取内容,提高用户访问网站响应速度. 广州的用户,访问广州的节点.北京的用户,访问北京的节点. 图片CDN,提高图片访问,方便数据迁移. DNS,域名系统.处理域名和IP地 ...