机器学习(2)knn算法

发布于:2025-08-16 ⋅ 阅读:(23) ⋅ 点赞:(0)
1. K 近邻算法(KNN)概述
  • 核心定义:K 近邻算法(KNN) 指每个样本可由最接近的 K 个邻近值代表,K 为近邻数量,一般不大于 20。
  • 核心逻辑:对于无标签的新数据,通过比较其特征与样本集中数据的特征,提取最相似的 K 个数据的类别标签,以 K 个数据中出现次数最多的类别作为新数据的分类。
2. KNN 算法分类步骤
  1. 计算已知类别数据集所有点与当前点之间的距离;
  2. 按照距离递增次序对这些点进行排序;
  3. 选取与当前点距离最小的 K 个点;
  4. 确定这 K 个点所在类别的出现频率;
  5. 返回这 K 个点中出现频率最高的类别,作为当前点的预测分类。
3. 距离度量方式
距离类型 定义 公式
欧式距离 衡量多维空间中两个点之间的绝对距离,是最常见的距离度量 二维:d=(x1​−x2​)2+(y1​−y2​)2​;三维:d=(x1​−x2​)2+(y1​−y2​)2+(z1​−z2​)2​;n 维:d=∑i=1n​(xi​−yi​)2​
曼哈顿距离 由赫尔曼・闵可夫斯基提出,指两个点在标准坐标系上的绝对轴距总和 平面上:d(i,j)=∣x1​−x2​∣+∣y1​−y2​∣
4. 应用案例
(1)电影分类
  • 已知数据:
    电影类型 电影名称 打斗镜头数 接吻镜头数
    爱情片 California Man 3 104
    爱情片 He's Not Really into Dudes 2 100
    爱情片 Beautiful Woman 1 81
    动作片 Kevin Longblade 101 5
    动作片 Robo Slayer 3000 99 2
    动作片 Amped II 18 90 (未知类型)
  • 任务:根据打斗镜头和接吻镜头数,用 KNN 预测未知电影 Amped II 的类型。
(2)鸢尾花分类
  • 特征说明:包含 4 个特征,分别是花萼长度(sepal length)、花萼宽度(sepal width)、花瓣长度(petal length)、花瓣宽度(petal width)(单位:cm)。
  • 数据集信息:通过datasets.load_iris()加载,包含分类标签(iris.target)、特征名称(iris.feature_names)、类别名称(iris.target_names)。
  • 实现步骤:
    • 划分训练集和测试集:x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3)
    • 训练模型:创建 KNN 实例(knn = KNeighborsClassifier(n_neighbors=5, metric="euclidean")),并拟合训练集(knn.fit(x_train, y_train)
    • 评分与预测:计算训练集得分(train_score = knn.score(x_train, y_train))、测试集得分(test_score = knn.score(x_test, y_test)),预测测试集标签(y_pred = knn.predict(x_test)

网站公告

今日签到

点亮在社区的每一天
去签到