题目链接:Kiggle:Digit Recognizer

Each image is 28 pixels in height and 28 pixels in width, for a total of 784 pixels in total.

  给的是28像素的高和宽,所以总共有784像素,在处理的过程中,先用PCA进行降维,对数据进行主要的特征分量;然后通过KNN(K-邻近算法)进行对测试数据的预测分类。

  1、对于PCA算法:主成分分析,是通过线性变质将原始数据转换程一组各维度无关的表示,可以用于提取数据的主要特征分量,用于高维数据的降维。

  步骤:

    1.将原始数据按行组成n行m列的矩阵X

    2.将X的每一行进行零均值化,即减去每一行的均值

    3.求出协方差矩阵

    4.求出协方差矩阵的特征值以及对应的特征向量

    5.将特征向量按对应特征值的大小从上到下按行排序,排列成矩阵,取前K行组成矩阵P

    6.Y=PX,即为降维到K维的数据

PCA算法相关函数:

pca(n_componments=n,copy=True,whiten=False)

n_componments:表示PCA想要保留的主要成分的个数,既保留下来的特征值的个数,当参数为“mle”时,将自动选取特征个数。

copy:bool类型,默认为True,表示在运行原始数据时,是否将原始数据复制一份,True为原始数据不变。

Whiten:默认为False,使每个特征具有相同的方差。

fit(x,y=None)

表示数据X是用来训练的数据

fit_transform(x)

表示用X来作为训练PCA的模型,同时返回降维后的数据,newX = fit_transform(x),newX是降维后的数据

inverse_tracnsform()

表示将降维后的数据返回到原始数据,X = pca.inverse_transform(newX)

transform(x)

将数据C转换成降维后的数据

   2、KNN算法

    步骤:

      1.计算测试数据与各个训练样本数据之间的距离,距离有两种计算方法,分别是欧式距离和曼哈顿距离

      2.按照距离的递增关系进行排序

      3.选取距离最近的前K个点

      4.确定前K个点的所在类别的出现频率

      5.返回前K个点中,出现频率最高的类别作为测试数据的预测类型

    样本属性:是在前K个最相似的样本中大多数属于的那一类

    KNN算法的时间复杂度是:O(D*N),D是特征维度,N是样本个数

Kiggle:Digit Recognizer的更多相关文章

  1. kaggle实战记录 =>Digit Recognizer

    date:2016-09-13 今天开始注册了kaggle,从digit recognizer开始学习, 由于是第一个案例对于整个流程目前我还不够了解,首先了解大神是怎么运行怎么构思,然后模仿.这样的 ...

  2. Kaggle—Digit Recognizer竞赛

    Digit Recognizer 手写体数字识别  MNIST数据集 本赛 train 42000样例 test 28000样例,原始MNIST是 train 60000 test 10000 我分别 ...

  3. DeepLearning to digit recognizer in kaggle

    DeepLearning to digit recongnizer in kaggle 近期在看deeplearning,于是就找了kaggle上字符识别进行练习.这里我主要用两种工具箱进行求解.并比 ...

  4. Kaggle入门(一)——Digit Recognizer

    目录 0 前言 1 简介 2 数据准备 2.1 导入数据 2.2 检查空值 2.3 正则化 Normalization 2.4 更改数据维度 Reshape 2.5 标签编码 2.6 分割交叉验证集 ...

  5. Kaggle 项目之 Digit Recognizer

    train.csv 和 test.csv 包含 1~9 的手写数字的灰度图片.每幅图片都是 28 个像素的高度和宽度,共 28*28=784 个像素点,每个像素值都在 0~255 之间. train. ...

  6. kaggle赛题Digit Recognizer:利用TensorFlow搭建神经网络(附上K邻近算法模型预测)

    一.前言 kaggle上有传统的手写数字识别mnist的赛题,通过分类算法,将图片数据进行识别.mnist数据集里面,包含了42000张手写数字0到9的图片,每张图片为28*28=784的像素,所以整 ...

  7. 适合初学者的使用CNN的数字图像识别项目:Digit Recognizer with CNN for beginner

    准备工作 数据集介绍 数据文件 train.csv 和 test.csv 包含从零到九的手绘数字的灰度图像. 每张图像高 28 像素,宽 28 像素,总共 784 像素.每个像素都有一个与之关联的像素 ...

  8. 使用sklearn进行集成学习——实践

    系列 <使用sklearn进行集成学习——理论> <使用sklearn进行集成学习——实践> 目录 1 Random Forest和Gradient Tree Boosting ...

  9. SMO序列最小最优化算法

    SMO例子: 1 from numpy import * 2 import matplotlib 3 import matplotlib.pyplot as plt 4 5 def loadDataS ...

随机推荐

  1. 《Linux内核设计与实现》学习总结 Chap1~2

    第一章 Linux内核简介 一.历史 由于Unix系统设计简洁并且在发布时提供源代码,所以许多其他组织和团体都对它进了进一步的开发. Unⅸ虽然已经使用了40年,但计算机科学家仍然认为它是现存操作系统 ...

  2. java 注解详解

    先引用一下百度百科的名词解析: 定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段. ...

  3. poppo大根堆的原理与实现。

    大根堆的定义:1 大根堆是一个大根树 2 大根堆是一个完全二叉树 所以大根堆用数组表示是连续的,不会出现空白字段. 对于大根堆的插入 对于大根堆的插入,可以在排序前确定大根堆的形状,可以确定元素5从位 ...

  4. 高并发大容量NoSQL解决方案探索

    大数据时代,企业对于DBA也提出更高的需求.同时,NoSQL作为近几年新崛起的一门技术,也受到越来越多的关注.本文将基于个推SRA孟显耀先生所负责的DBA工作,和大数据运维相关经验,分享两大方向内容: ...

  5. kendalltau肯德尔和谐系数

    sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...

  6. maven创建spring项目之后,启动报错java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

    出错情景:maven中已经加载了spring的核心包,但是项目启动时,报错: org.apache.catalina.core.StandardContext listenerStart严重: Err ...

  7. (转)javap 指令集

    栈和局部变量操作将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型 ...

  8. NOIP2013 提高组 Day2

    期望得分:100+100+30+=230+ 实际得分:100+70+30=200 T2 觉得题目描述有歧义: 若存在2i却不存在2i+1,自己按不合法做的,实际是合法的 T3  bfs 难以估分 虽然 ...

  9. Codeforces 807 B T-Shirt Hunt

    B. T-Shirt Hunt http://codeforces.com/problemset/problem/807/B time limit per test 2 seconds memory ...

  10. Python学习笔记(四十一)— 内置模块(10)urllib

    摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432688314 ...