Digital Recognizer-KNN手写数字识别

KNN描述
  1. KNN邻近算法是简单的分类与回归方法,属于监督学习,也属于懒散学习法。给定一个训练集(包括训练数据和训练标签)和一个测试对象(只有测试数据,需要预测测试标签)该算法计算测试对象和每个训练对象之间的距离或相似度,这个测试对象在空间K个最近样本中大多数属于某个类别,那么这个测试对象的标签就属于这个类别。

2.KNN工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每个数据所属的类别。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,算法提取样本最相似(最邻近)数据的分类标签。一般来说,只选取样本集中前k个最相似的数据,这就是KNN邻近算法中k的出处,通常k不大于20的整数。最后选择k个最相似数据中出现最多的分类,作为新数据的分类

注释:

k值较小,模型复杂度较高,容易发生过拟合,学习的误差会增大,预测结果对邻近实例点特别敏感;k值较大可以减少学习的误差,但是学习的近似误差会增大,与输入实例较远的训练实例也会对预测取到左右;因此,一般选择k值较小且奇数,也会用交叉验证法选取最优的k值。

下面开始python sklearn的KNN算法

#读取数据
import numpy as np
import pandas as pd
import os
os.chdir('/Users/xy/Desktop/机器学习/Digit Recognizer/digit-recognizer')
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
print(train.head(5),type(train),train.shape)#42000,785
print(test.head(5),type(test),test.shape)#28000,744

数据量很大

#提取训练数据特征
data = train.iloc[:,1:]
#提取训练标签
label = train.iloc[:,0]
#建立KNN模型
from sklearn import neighbors
model = neighbors.KNeighborsClassifier(n_neighbors=1)
model.fit(data,label)
pre = model.predict(test)
print(pre)

等着跑数儿中~~~~
经过多次实验,k=1测试结果最接近

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本章节主要介绍机器学习传统算法的监督学习部分。监督学习算法主要解决回归和分类两大问题。只能做回归的算法是线性回归,...
    阿阿阿阿毛阅读 8,646评论 0 6
  • 分类算法之K最近邻算法(KNN)的Python实现 KNN的定义 所谓K近邻算法,即是给定一个训练数据集,对新的输...
    盗梦者_56f2阅读 3,405评论 0 2
  • 概述及标签体系搭建 1 概述 随着信息技术的迅速发展和信息内容的日益增长,“信息过载”问题愈来愈严重,愈发带来很大...
    JinkeyAI阅读 23,255评论 10 241
  • 听闻:刚开始是从大V那里看到的,从小白营开始,一直到了现在的基金课,没想到,一入门便深深的爱上了。 ...
    起风的清晨_577d阅读 1,115评论 8 13
  • 世上不缺爱,而是缺少平常心!人都喜欢争强好胜,却不知道自持。所以有点小事就弄的满城风雨,还有就是没有同情心看不起穷...
    刘秀娟A阅读 224评论 0 0

友情链接更多精彩内容