KNN描述
- 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测试结果最接近
网友评论