kNN算法学习——原理与实战

1、kNN算法实现原理:

(1)计算数据点与训练集数据之间的距离:
欧式距离:distance = ((xa1-xb1)**2+(xa2-xb2)**2)**0.5
(2)确定前k个距离最小的数据的分类类别
(3)在这k个分类类别里,频率最高的类别为该数据点的分类类别

2、k值选择:
(1)k值太小,容易过拟合
(2)k值太大,容易欠拟合
(3)用交叉验证的方式选择k值

3、kNN实战流程:
(1)加载数据
(2)准备数据:数据探索、数据可视化、数据规范化
(3)特征选择
(4)模型训练
(5)模型评估
(6)使用模型

4、sklearn工具包:

(1)分类工具导入:
from sklearn.neighbors import KNeighborsClassifier
(2)回归工具导入:
from sklearn.neighbors import KNeighborsClassifier
(3)KNeighbersClassifier构造参数:
n_neighber:即k,默认为5
weights:确定邻居的权重,uniform(权重相同),distance(与距离成反比),或者自定义函数
algorithm: 用来确定计算邻居的方法,默认为auto
(4)功能函数:
fit(train_x, train_y):训练分类器模型
predict(test_x):用训练好的分类模型进行预测

5、实战项目:手写识别系统

from sklearn.model_selection import train_test_split
from sklearn import preprocessing
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_digits
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt

# 加载数据
digits = load_digits()
data = digits.data
# 数据探索
print(data.shape)
# 查看第一幅图像
print(digits.images[0])
# 第一幅图像代表的数字
print(digits.target[0])
# 将第一幅图像显示出来
plt.gray()
plt.imshow(digits.images[0])
plt.show()

# 分割数据,75%数据作为训练集,其余作为测试集
train_x, test_x, train_y, test_y = train_test_split(data, digits.target, test_size=0.25, random_state=33)

# 采用z_score规范化数据
ss = preprocessing.StandardScaler()
train_ss_x = ss.fit_transform(train_x)
test_ss_x = ss.transform(test_x)

# 创建knn分类器
knn = KNeighborsClassifier()
knn.fit(train_ss_x, train_y)
predict_y = knn.predict(test_ss_x)
print('knn的准确率为:%.4lf'% accuracy_score(test_y, predict_y))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值