昇思25天学习打卡营第16天|基于Mindspore的红酒分类实验

基于Mindspore的红酒分类实验

实验目的

本实验的主要目标是通过使用MindSpore实现K近邻(KNN)算法,深入理解其原理与应用,特别是在红酒数据集上的表现。具体目的包括:

  • 理解KNN算法的基本概念和工作原理。
  • 学习如何使用MindSpore进行KNN实验和模型训练。
  • 掌握数据预处理和可视化的技巧。

K近邻算法原理

KNN是一种广泛应用于分类和回归的非参数统计方法。其核心思想是通过计算待预测样本与训练样本之间的距离,找到K个最接近的样本,并根据这些样本的类别或数值进行预测。KNN的关键要素包括:

  • K值选择:K值决定了邻居的数量。K值太小会导致模型对噪声敏感,而K值过大则可能模糊类别界限,影响预测准确性。

  • 距离度量:常用的距离计算方法包括:

    • 欧氏距离:最常用的距离度量,适用于连续变量。
    • 曼哈顿距离:适合于计算城市街区距离。
    • 其他距离:如海明距离和马氏距离等。
  • 分类决策规则:通常采用多数表决法,即选取K个邻居中出现频率最高的类别作为预测结果。也可以根据距离进行加权投票。

分类流程

KNN分类的基本流程如下:

  1. 找出与待测样本最近的K个训练样本,并保存到邻居集合N中。
  2. 统计集合N中每个类别的样本数量,记为 C i C_{i} Ci。
  3. 选择出现次数最多的类别,即 argmax ( C i ) \text{argmax}(C_{i}) argmax(Ci),作为最终分类结果。

回归流程

对于回归问题,KNN的预测输出为最近K个训练样本标签的均值:

y ^ = 1 k ∑ i = 1 k y i \hat y = \frac{1}{k} \sum_{i=1}^{k} y_i y^=k1i=1∑kyi

如果考虑样本权重,则计算公式为:

y ^ = ∑ i = 1 k w i y i k \hat y = \frac{\sum_{i=1}^{k} w_i y_i}{k} y^=k∑i=1kwiyi

其中 w i w_i wi为第 i i i个样本的权重。

距离的定义

KNN算法的实现依赖于样本之间的距离计算。最常用的距离函数是欧氏距离,其定义为:

d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 d(x,y) = \sqrt{\sum_{i=1}^{n}(x_i - y_i)^2} d(x,y)=i=1∑n(xi−yi)2

在使用欧氏距离时,特征向量的归一化是必要的,以避免特征尺度不同导致的影响。

实验环境

预备知识

  • 熟练使用Python编程语言。
  • 理解基本的机器学习理论,如KNN、无监督学习和距离度量等。

实验环境

  • MindSpore版本:2.0(定期更新)。
  • 支持系统:实验可在Windows和Linux系统上运行,支持CPU、GPU和Ascend硬件。

数据处理

数据准备

使用Wine数据集,该数据集包含178个样本和13个属性,数据来源于对意大利同一地区三种不同品种葡萄酒的化学分析。属性包括:

  1. Alcohol:酒精含量
  2. Malic acid:苹果酸
  3. Ash:灰分
  4. Alcalinity of ash:灰的碱度
  5. Magnesium:镁含量
  6. Total phenols:总酚
  7. Flavanoids:类黄酮
  8. Nonflavanoid phenols:非黄酮酚
  9. Proanthocyanins:原花青素
  10. Color intensity:色彩强度
  11. Hue:色调
  12. OD280/OD315 of diluted wines:稀释酒的光密度
  13. Proline:脯氨酸

数据读取与处理

  1. 导入必要的Python库和MindSpore模块。
  2. 读取Wine数据集,将数据集分为已知类别的训练集和待验证的验证集。
  3. 对样本进行可视化分析,以观察不同属性的分布和可分性。

数据划分

将数据集按照128:50的比例划分为训练集和验证集,确保训练集包含已知类别的样本,而验证集用于测试模型的准确性。

模型构建

通过MindSpore提供的算子,如tilesqrtTopK,计算输入样本与训练样本之间的距离,获取K个最近邻的样本。

模型预测

在验证集上测试KNN算法的效果,选择K值为5,验证结果显示模型精度接近80%。这表明KNN算法能够有效区分三种不同类型的葡萄酒。

实验小结

本实验实现了KNN算法来解决红酒的三分类问题。通过对Wine数据集的分析与处理,KNN算法成功地根据13种化学属性判断出酒的种类。结果表明,KNN是一种有效的分类工具,为后续研究提供了有价值的经验和基础。

相关推荐
love_and_hope6 分钟前
Pytorch学习--神经网络--搭建小实战(手撕CIFAR 10 model structure)和 Sequential 的使用
人工智能·pytorch·python·深度学习·学习
Chef_Chen9 分钟前
从0开始学习机器学习--Day14--如何优化神经网络的代价函数
神经网络·学习·机器学习
芊寻(嵌入式)19 分钟前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习
hong1616881 小时前
跨模态对齐与跨领域学习
学习
阿伟来咯~2 小时前
记录学习react的一些内容
javascript·学习·react.js
Suckerbin2 小时前
Hms?: 1渗透测试
学习·安全·网络安全
水豚AI课代表2 小时前
分析报告、调研报告、工作方案等的提示词
大数据·人工智能·学习·chatgpt·aigc
几两春秋梦_2 小时前
符号回归概念
人工智能·数据挖掘·回归
聪明的墨菲特i2 小时前
Python爬虫学习
爬虫·python·学习
Diamond技术流2 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos