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

一、介绍

本次实验主要运用 MindSpore 在部分 wine 数据集上开展 KNN 实验,旨在深入理解 KNN 算法的原理与应用,并通过实际操作掌握其在数据分类中的具体实现。

二、K 近邻算法原理

要素描述
K 值决定分类结果的邻居数量,过小易受噪声影响,过大则类别界限模糊。
距离度量反映样本相似度,常用欧式距离、曼哈顿距离、海明距离等。
分类决策规则通常为多数表决或基于距离加权的多数表决。
  1. 分类问题

    • 流程:找出待测样本的最近 k 个样本,统计各类别样本个数,取最多数类别为结果。
    • 带权重的 k 近邻算法:考虑样本投票权重。
  2. 回归问题

    • 无权重:预测值为最近 k 个训练样本标签均值。
    • 带权重:预测值为加权后的标签均值。
  3. 距离定义

    • 欧氏距离:常用于 KNN 算法,使用时需对特征向量各分量归一化。
    • 其他距离:如 Mahalanobis 距离、Bhattacharyya 距离等。

三、数据处理

步骤描述
数据准备可从 Wine 数据集官网或华为云 OBS 下载 wine.data 文件。
数据读取与处理导入所需模块,配置运行信息,读取并处理 Wine 数据集,将数据分为自变量 X 和因变量 Y,对样本的某些属性进行二维可视化,观察样本分布和可分性,划分训练集和验证集。

四、数据集的作用

作用说明
提供数据基础Wine 数据集包含不同种类葡萄酒的各种特征值,为算法提供分析和学习素材。
验证算法效果通过对已知类别的样本学习和预测,评估 K 近邻算法在该数据集上的准确性和有效性。
探索特征关系帮助了解不同葡萄酒特征之间的内在联系,及特征如何影响分类结果。

以下是读取和处理数据集的代码示例:

import os
import csv
import numpy as np# 读取数据集
with open('wine.data') as csv_file:data = list(csv.reader(csv_file, delimiter=','))# 提取自变量和因变量
X = np.array([[float(x) for x in s[1:]] for s in data[:178]], np.float32)
Y = np.array([s[0] for s in data[:178]], np.int32)

五、模型构建与预测

  1. 计算距离
    • 构建 KnnNet 类,利用 MindSpore 算子计算输入样本与训练样本的距离,并获取 top k 近邻。
class KnnNet(nn.Cell):def __init__(self, k):super(KnnNet, self).__init__()self.k = kdef construct(self, x, X_train):x_tile = ops.tile(x, (128, 1))square_diff = ops.square(x_tile - X_train)square_dist = ops.sum(square_diff, 1)dist = ops.sqrt(square_dist)values, indices = ops.topk(-dist, self.k)return indices
  1. 预测函数
    • 定义 knn 函数,根据近邻样本类别进行预测。
def knn(knn_net, x, X_train, Y_train):x, X_train = ms.Tensor(x), ms.Tensor(X_train)indices = knn_net(x, X_train)topk_cls = [0]*len(indices.asnumpy())for idx in indices.asnumpy():topk_cls[Y_train[idx]] += 1cls = np.argmax(topk_cls)return cls
  1. 模型预测
    • 在验证集上进行预测,k 取 5,验证精度约 80%,表明 KNN 算法在该三分类任务上有效。

六、可用于 K 近邻算法聚类实验的其他数据集

数据集描述
Iris 数据集包含鸢尾花的花瓣长度、宽度等特征,用于花卉种类的分类。
MNIST 数据集手写数字图像数据集,可用于数字分类任务。
20 Newsgroups 数据集文本分类数据集,可通过提取文本特征进行分类。

七、KNN 算法中距离度量的作用

距离度量在 KNN 算法中起着至关重要的作用:

  1. 确定样本相似性:通过计算距离来衡量两个样本之间的相似程度。距离越小,表明样本越相似;距离越大,相似性越低。
  2. 选择近邻样本:KNN 算法的核心是找到距离待测样本最近的 k 个样本。距离度量的准确性直接影响到近邻样本的选择。
  3. 影响分类结果:不同的距离度量方式可能会导致选择不同的近邻样本,从而影响最终的分类决策。

例如,在欧式距离中,它对各维度上的差异同等对待。而在曼哈顿距离中,更侧重于考虑坐标差值的绝对值之和。

八、实验小结

本实验运用 MindSpore 实现 KNN 算法,对 wine 数据集的三类样本进行分类,验证了算法能依据酒的 13 种属性判别酒的品种。

通过本次实验,对 KNN 算法的原理和实践有了更深入的理解,为进一步应用和优化算法奠定了基础。未来可探索更多复杂数据集和改进算法,提升分类效果和泛化能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1489264.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【告别截图烦恼】4款超神截图软件,让你的设计工作飞起来!

你是否还在为截图时的繁琐操作头疼?网页内容截不全,图片模糊不清,或是在图层中翻找素材时手忙脚乱?今天,米兔要带你摆脱这些烦恼,介绍四款让你事半功倍的截图软件! 1. Snipaste:简单…

ArrayList底层原理

1. ArrayList 的基本结构 ArrayList 内部使用一个 Object 类型的数组 elementData 来存储所有的元素。数组的长度可以动态调整。 2. 初始容量和扩容机制 初始容量:当使用无参构造创建一个 ArrayList 实例时会在底层创建一个默认长度为0的数组,可以通过…

解决vscode+UE5中vscode无法识别头文件,无法函数无法跳转,也无法自动补全的问题。

一、概述 接上一条博客,虽然解决了报错的问题,但是实际上的问题却没有解决,无论我怎么点击,其都无法完成跳转,也无法完成自动补全的问题。 在网络上搜索了很多资料后,发现是在使用vscode时候UE5在vscode中的…

masscan 端口扫描——(Golang 简单使用总结)

1. 前言 最近要做一个扫描 ip 端口的功能 扫描的工具有很多,但是如何做到短时间扫描大量的 ip 是个相对困难的事情。 市场上比较出名的工具有 masscan和nmap masscan 支持异步扫描,对多线程的利用很好,同时仅仅支持 syn 半开扫描&#xff…

大模型深度神经网络(Deep Neural Network, DNN)

大模型深度神经网络(Deep Neural Network, DNN)是一种复杂的机器学习模型,其特点在于包含多个隐藏层,从而赋予模型强大的非线性表达能力和对复杂数据模式的学习能力。以下是对大模型DNN的详细介绍: 一、基本概念 深度…

AR 眼镜之-充电动画定制-实现方案

目录 📂 前言 AR 眼镜系统版本 充电动画 1. 🔱 技术方案 1.1 方案介绍 1.2 实现方案 关机充电动画 亮屏/锁屏充电动画 2. 💠 关机充电动画 2.1 关机充电动画核心处理类与路径 2.2 实现细节 步骤一:1)定制 …

Mac printf处理参数的奇特之处(macOS中,printf使用%d输出一个浮点数会发生什么情况?)

今天早上网上冲浪的时候看到了 2016 年的一篇文章&#xff0c;里面提到了一段代码&#xff1a; #include <stdio.h> int main() {double a 10;printf("a %d\n", a);return 0; }说这段代码在 x86&#xff08;IA-32&#xff09;上运行时&#xff0c;输出为0&a…

通过 C# 写入数据到Excel表格

Excel 是一款广泛应用于数据处理、分析和报告制作的电子表格软件。在商业、学术和日常生活中&#xff0c;Excel 的使用极为普遍。本文将详细介绍如何使用免费.NET库将数据写入到 Excel 中&#xff0c;包括文本、数值、数组、和DataTable数据的输入。 文章目录 C# 在Excel单元格…

算法-----递归~~搜索~~回溯(宏观认识)

目录 1.什么是递归 1.1二叉树的遍历 1.2快速排序 1.3归并排序 2.为什么会用到递归 3.如何理解递归 4.如何写好一个递归 5.什么是搜索 5.1深度&#xff08;dfs&#xff09;优先遍历&优先搜索 5.2宽度&#xff08;bfs&#xff09;优先遍历&优先搜索 6.回溯 1.什…

GD 32 流水灯

前言&#xff1a; 通过后面的学习掌握了一些逻辑架构的知识&#xff0c;通过复习的方式将学到的裸机任务架构的知识运用起来&#xff0c;同时巩固前面学到的知识&#xff0c;GPIO的配置等。 开发板上LED引脚使用示意图 注&#xff1a;此次LED灯的点亮凡是是高电平点亮&#xff…

计科录取75人!常州大学计算机考研考情分析!

常州大学&#xff08;Changzhou University&#xff09;&#xff0c;简称“常大”&#xff0c;位于江苏省常州市&#xff0c;是江苏省人民政府与中国石油天然气集团有限公司、中国石油化工集团有限公司及中国海洋石油集团有限公司共建的省属全日制本科院校&#xff0c;为全国深…

AIoTedge边缘物联网平台,开启智能物联新架构

边缘物联网平台是一种将计算能力、数据处理和应用服务部署在网络边缘的解决方案&#xff0c;旨在提高响应速度、降低带宽需求和增强数据安全。根据搜索结果&#xff0c;边缘物联网平台应具备以下功能&#xff1a; 云边协同&#xff1a; 云边一体架构&#xff0c;通过云端管理边…

PHP家政系统自营+多商户独立端口系统源码小程序

家政行业的新篇章 引言&#xff1a;家政行业的数字化转型 近年来&#xff0c;随着科技的飞速发展和人们生活节奏的加快&#xff0c;家政服务行业也迎来了数字化转型的浪潮。为了提升服务效率、优化用户体验&#xff0c;越来越多的家政公司开始探索“家政系统自营多商户小程序…

Tomcat中的WebSocket是如何实现的?

Tomcat中的WebSocket是如何实现的&#xff1f; WebSocket是一种在客户端和服务器之间提供长期、双向、实时通信的协议 全双工通信&#xff1a;WebSocket允许数据同时在客户端和服务器双向通信&#xff0c;无需像HTTP等待请求和响应的循环 单个TCP连接&#xff1a;建立一次连…

解答|需要通过等保测评、密评的SSL证书应考虑哪些因素?

随着数字化转型的深入&#xff0c;网络安全成为了企业发展的基石。在中国&#xff0c;网络安全等级保护制度&#xff08;简称“等保”&#xff09;和密码安全性评估&#xff08;简称“密评”&#xff09;是确保信息系统安全的重要标准。在这一背景下&#xff0c;选择SSL证书时需…

html+css 实现悬浮按钮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 文…

F4A0手把手教程1: 华大单片机HC32F4A0如何新建工程(ddl库版本)

开发板请点击&#xff1a;https://item.taobao.com/item.htm?spma21n57.1.item.3.5fc760c3ycChCu&priceTId2150418a17219238749041878ec06d&utparam%7B%22aplus_abtest%22:%222166044947a45798ae4c3d102fcea719%22%7D&id707262644934&ns1&abbucket20 准备…

【ffmpeg命令入门】Nginx的安装与制作HLS流媒体服务器

文章目录 前言Nginx简介Ubuntu安装Nginxffmpeg生成HLS流媒体1. 生成HLS流媒体命令说明 配置Nginxffplay播放m3u8 总结 前言 在数字内容传输和流媒体服务中&#xff0c;HLS&#xff08;HTTP Live Streaming&#xff09;已经成为一种流行的解决方案&#xff0c;特别是在视频直播…

电缆规格型号对照表

一、电线电缆产品主要分为五大类: 1、裸电线及裸导体制品本类产品的主要特征是&#xff1a;纯的导体金属&#xff0c;无绝缘及护套层&#xff0c;如钢芯铝绞线、铜铝汇流排、电力机车线等&#xff1b;加工工艺主要是压力加工&#xff0c;如熔炼、压延、拉制、绞合/紧压绞合等&…

C# 使用pythonnet 迁入 python 初始化错误解决办法

pythonnet 从 3.0 版本开始&#xff0c;必须设置Runtime.PythonDLL属性或环境变量 例如&#xff1a; string pathToVirtualEnv ".\\envs\\pythonnetTest"; Runtime.PythonDLL Path.Combine(pathToVirtualEnv, "python39.dll"); PythonEngine.PythonHom…