一、数据

  • 获取数据
    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. Pandas的 loc iloc ix 区别

    先看代码: In [46]: import pandas as pd In [47]: data = [[1,2,3],[4,5,6]] In [48]: index = [0,1] In [49]: ...

  2. JSP语法及内置对象

    JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1]  是由Sun Microsystems公司倡导.许多公司参与一起建立的一种动 ...

  3. Kubernetes RBAC

    在Kubernetes1.6版本中新增角色访问控制机制(Role-Based Access,RBAC)让集群管理员可以针对特定使用者或服务账号的角色,进行更精确的资源访问控制.在RBAC中,权限与角色 ...

  4. vi编辑器快捷键使用详解

    文本编辑器是所有计算机系统中最常用的一种工具.UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi,而vi命令繁多,论坛里好像这方面的总结不多,以下稍做总结,以资共享!渴望更正和补充! ...

  5. 第二节课-Data-driven approach:KNN和线性分类器分类图片

    2017-08-12 1.图片分类是很多CV任务的基础: 2.图片分类要面临很多的问题,比如图片被遮挡,同一种动物有很多种颜色,形状等等,算法需要足够强壮: 3.所以很难直接写出程序来进行图片分类,常 ...

  6. hive学习8(小案例1练习)

    创建数据库 hive> create database feigu; hive> use feigu; 创建表 stg_job表 drop table if exists stg_job; ...

  7. hdoj1006--Tick and Tick

    Problem Description The three hands of the clock are rotating every second and meeting each other ma ...

  8. pandas read_sql与read_sql_table、read_sql_query 的区别

    一:创建链接数据库引擎 from sqlalchemy import create_engine db_info = {'user':'user', 'password':'pwd', 'host': ...

  9. ubuntu上安装nodejs

    目录: 1. nodejs的下载 2. 解压和安装 3. 安装过程中出现过的问题 4. 总结 1. nodejs的下载 我刚开始没有linux系统,于是安装了nodejs的windows版本进行学习. ...

  10. github-如何设置SSH Key

    设置SSH Key 在注册好github账号后,打开你的电脑桌面上的一个文件夹,这就建立了一个本地工作库,在里面点击鼠标右键,找到你的git bash here-点击开,如图所示:进行下面操作: 输入 ...