8.15 机器学习(2)K最近邻算法

一、算法核心思想

1、定义:K 近邻(K-Nearest Neighbor, KNN)用最近的 K 个已知样本代表/决定未知样本的类别

2、步骤:

① 计算未知点到所有已知点的距离,

② 按距离升序排序,

③ 选前 K 个(K ≤ 20),

④ 统计这 K 个邻居中类别出现频率,

⑤ 将频率最高的类别作为预测结果,

二、距离度量

  1. 欧式距离(Euclidean)

    多维空间两点直线距离:

    d = √Σ(xi -- yi)²

  2. 曼哈顿距离(Manhattan)

    各维度绝对值之和:

    d = Σ|xi -- yi|

三、鸢尾花数据集练习(为分类问题)

将鸢尾花数据集导入库,生成数据

复制代码
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import numpy as np

# 设置随机种子,保证结果可复现
np.random.seed(0)

#加载鸢尾花数据集
iris=datasets.load_iris()
iris

分三类

将他们分类、增加特征、类别名

最终KNN邻近值选取并验证

四、自己新找一个数据集

练习:导入葡萄酒数据集(为分类问题)

复制代码
#导入葡萄酒数据集
wine = datasets.load_wine()
wine

加载前十行数据wine.data[:10] 葡萄酒的特征值

给他分类标签并标明特征和类别。

训练和测试X和Y

预测X和Y的值,选择最优K值交叉验证,标明范围。最后画图

K 值选择、距离度量方式决定模型效果。

适用小规模、低维、类别边界不规则的数据。