《昇思25天学习打卡营第17天|K近邻算法实现红酒聚类》

K近邻算法原理介绍

K近邻算法(K-Nearest-Neighbor, KNN)是一种用于分类和回归的非参数统计方法,最初由 Cover和Hart于1968年提出是机器学习最基础的算法之一。它正是基于以上思想:要确定一个样本的类别,可以计算它与所有训练样本的距离,然后找出和该样本最接近的k个样本,统计出这些样本的类别并进行投票,票数最多的那个类就是分类的结果。KNN的三个基本要素:

  • K值,一个样本的分类是由K个邻居的"多数表决"确定的。K值越小,容易受噪声影响,反之,会使类别之间的界限变得模糊。

  • 距离度量,反映了特征空间中两个样本间的相似度,距离越小,越相似。常用的有Lp距离(p=2时,即为欧式距离)、曼哈顿距离、海明距离等。

  • 分类决策规则,通常是多数表决,或者基于距离加权的多数表决(权值与距离成反比)。

  • 数据准备

    • 获取红酒数据集。通常红酒数据集包括多种特征,比如酸度、糖分、酒精度等。
    • 将数据集分为训练集和测试集。
  • 特征提取

    • 对每个红酒样本提取特征。每个样本通常表示为一个多维向量,例如 [x1,x2,...,xn][x_1, x_2, ..., x_n][x1,x2,...,xn],其中 xix_ixi 是红酒的一个特征。
  • 计算距离

    • 使用距离度量(如欧氏距离)计算测试样本与训练集中每个样本的距离。
    • 欧氏距离公式: d(x,y)=∑i=1n(xi−yi)2d(x, y) = \sqrt{\sum_{i=1}^{n}(x_i - y_i)^2}d(x,y)=i=1∑n(xi−yi)2 其中 xxx 和 yyy 分别是两个样本的特征向量。
  • 选择 KKK 值

    • 选择一个适当的 KKK 值。 KKK 通常通过交叉验证来确定。一般来说, KKK 值较小时,模型较复杂,容易过拟合; KKK 值较大时,模型较简单,容易欠拟合。
  • 寻找最近邻

    • 根据计算的距离,找出测试样本的 KKK 个最近邻居。
  • 投票或平均

    • 如果是分类问题,根据 KKK 个最近邻的类别进行投票,得票最多的类别为测试样本的类别。
    • 如果是回归问题,根据 KKK 个最近邻的值计算平均值或加权平均值,作为测试样本的预测值。
  • 模型评估

    • 使用适当的评估指标(如准确率、F1值等)评估模型在测试集上的表现。
相关推荐
MiyamiKK572 分钟前
leetcode_字符串 409. 最长回文串
数据结构·算法·leetcode
半盏茶香23 分钟前
扬帆数据结构算法之雅舟航程,漫步C++幽谷——LeetCode刷题之移除链表元素、反转链表、找中间节点、合并有序链表、链表的回文结构
数据结构·c++·算法
孤独且没人爱的纸鹤31 分钟前
【机器学习】深入无监督学习分裂型层次聚类的原理、算法结构与数学基础全方位解读,深度揭示其如何在数据空间中构建层次化聚类结构
人工智能·python·深度学习·机器学习·支持向量机·ai·聚类
CodeJourney.42 分钟前
小型分布式发电项目优化设计方案
算法
带多刺的玫瑰1 小时前
Leecode刷题C语言之从栈中取出K个硬币的最大面积和
数据结构·算法·图论
Cando学算法1 小时前
Codeforces Round 1000 (Div. 2)(前三题)
数据结构·c++·算法
薯条不要番茄酱1 小时前
【动态规划】落花人独立,微雨燕双飞 - 8. 01背包问题
算法·动态规划
小林熬夜学编程1 小时前
【Python】第三弹---编程基础进阶:掌握输入输出与运算符的全面指南
开发语言·python·算法
字节高级特工1 小时前
【优选算法】5----有效三角形个数
c++·算法
小孟Java攻城狮7 小时前
leetcode-不同路径问题
算法·leetcode·职场和发展