首页 > 其他分享 >昇思25天学习打卡营第14天|基于MindSpore的红酒分类实验

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

时间:2024-07-05 13:01:55浏览次数:16  
标签:25 plt 14 idx AI train 开发者 np 打卡

AI是在帮助开发者还是取代他们?

在软件开发领域,生成式人工智能(AIGC)正在改变开发者的工作方式。无论是代码生成、错误检测还是自动化测试,AI工具正在成为开发者的得力助手。然而,这也引发了对开发者职业前景和技能需求变化的讨论。AI究竟是在帮助开发者还是取代他们?

我的观点是,正如AI并没有取代翻译和编辑一样,它也不会取代开发者,而是通过提高工作效率来辅助他们。AI技术在机器学习和数据科学领域的应用极大提升了数据处理和算法优化的效率。例如,在数据预处理阶段,AI可以自动识别并处理异常值和缺失数据,减少了人工干预的需要。此外,AI还能通过算法优化器,自动调整模型参数,帮助开发者找到最优解决方案。这不仅加快了开发流程,还提升了模型的准确性,允许开发者将更多精力投入到创新和策略制定上。

        AI的辅助作用不仅局限于提升开发过程中的效率和准确性,其实用性在数据科学领域的具体应用中同样显著。以我进行的K近邻算法(KNN)实现红酒聚类的实验为例,我们可以深入了解AI在实际应用中如何辅助数据分析和模型构建。

        K近邻算法是一种简单直观的机器学习方法,用于分类和回归任务。其基本原理是找出一个样本最近的K个邻居,然后通过这些邻居的已知信息来预测该样本的属性。在实验中,我们利用KNN来对红酒数据集进行分类,这些数据包括来自意大利同一地区但不同品种的葡萄酒的化学成分分析。使用MindSpore框架,我们能够有效地处理数据和实施KNN算法。首先,对数据进行标准化处理,以消除不同化学成分量纲的影响,确保距离计算的准确性。接着,选择合适的K值是至关重要的步骤,因为K值的选择会直接影响分类的结果。通过实验,我们不断调整K值,观察分类精度的变化,从而找到最适合该数据集的K值。

具体代码如下:

# 导入必要的库
import os
import csv
import numpy as np
import matplotlib.pyplot as plt
import mindspore as ms
from mindspore import nn, ops

# 设置MindSpore上下文
ms.set_context(device_target="CPU")

# 读取红酒数据集
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)

# 数据可视化
plt.figure(figsize=(10, 8))
attrs = ['Alcohol', 'Malic acid', 'Ash', 'Alcalinity of ash', 'Magnesium', 'Total phenols',
         'Flavanoids', 'Nonflavanoid phenols', 'Proanthocyanins', 'Color intensity', 'Hue',
         'OD280/OD315 of diluted wines', 'Proline']
for i in range(4):
    plt.subplot(2, 2, i+1)
    a1, a2 = 2 * i, 2 * i + 1
    plt.scatter(X[:59, a1], X[:59, a2], label='1')
    plt.scatter(X[59:130, a1], X[59:130, a2], label='2')
    plt.scatter(X[130:, a1], X[130:, a2], label='3')
    plt.xlabel(attrs[a1])
    plt.ylabel(attrs[a2])
    plt.legend()
plt.show()

# 划分训练集和测试集
train_idx = np.random.choice(178, 128, replace=False)
test_idx = np.array(list(set(range(178)) - set(train_idx)))
X_train, Y_train = X[train_idx], Y[train_idx]
X_test, Y_test = X[test_idx], Y[test_idx]

# 定义KNN模型
class KnnNet(nn.Cell):
    def __init__(self, k):
        super(KnnNet, self).__init__()
        self.k = k

    def 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

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]] += 1
    cls = np.argmax(topk_cls)
    return cls

# 模型预测和精度测试
knn_net = KnnNet(5)
acc = 0
for x, y in zip(X_test, Y_test):
    pred = knn(knn_net, x, X_train, Y_train)
    acc += (pred == y)
    print(f'label: {y}, prediction: {pred}')
print(f'Validation accuracy is {acc / len(Y_test):.2f}')

结果

学习心得:

        AI在这一过程中的辅助体现在自动化选择最佳参数和提供模型验证的工具上。例如,MindSpore提供的自动化工具可以帮助我们快速比较不同K值下的模型表现,以及执行交叉验证等复杂的数据验证过程。这大大减轻了手动调参的负担,提高了实验的效率和可靠性。

        通过这一实验,我们不仅验证了KNN算法在实际应用中的有效性,也展示了AI如何在数据处理和算法优化上为开发者提供强有力的支持。这一点再次证实了AI的角色是辅助开发者,而非替代。开发者可以利用AI工具进行更高效的数据分析和算法实施,最终推动科技和业务的进步。


标签:25,plt,14,idx,AI,train,开发者,np,打卡
From: https://blog.csdn.net/ljd939952281/article/details/140192609

相关文章

  • 代码随想录算法训练营第十三天|今天量大管饱144、145、94、102、107、199、637、429、
    今天来处理二叉树part1、2、3,顶级享受,一次到位。完全二叉树和满二叉树概念没问题。二叉搜索树,左子树所有结点的值小于它的根结点的值,右子树上所有结点的值大于它的根结点的值平衡二叉搜索树,它是一棵空树或它的左右两个子树的高度差的绝对值不超过1。二叉树的存储方式:链式存储......
  • 海思SD3403/SS928V100开发(14)WIFI模块RTL8821驱动调试
    1.前言芯片平台:海思SD3403/SS928V100操作系统平台:Ubuntu20.04.05【自己移植】WIFI模块:LB-LINK的RTL88212. 调试记录参考供应商提供的操作手册2.1lsusb查看设备2.2编译供应商提供的驱动2.2.1修改Makefile2.2.2编译报错解决办法:将Makefile中arm改成ar......
  • Install gcc-14 on Ubuntu 22.04
    Installgcc-14onUbuntu22.04 Thesteps:1sudoaptinstallbuild-essential2sudoaptinstalllibmpfr-devlibgmp3-devlibmpc-dev-y3wgethttp://ftp.gnu.org/gnu/gcc/gcc-14.1.0/gcc-14.1.0.tar.gz4tar-xfgcc-14.1.0.tar.gz5cdgcc-14.1.06./configur......
  • 《昇思25天学习打卡营第7天 | 模型训练》
    《昇思25天学习打卡营第7天|模型训练》目录《昇思25天学习打卡营第7天|模型训练》模型训练的步骤构建数据集定义神经网络模型定义超参、损失函数和优化器超参损失函数优化器训练与评估模型训练的步骤模型训练一般分为四个步骤:构建数据集。定义神经网络模型。......
  • 代码随想录算法训练营第五十天 | 1143.最长公共子序列 392.判断子序列
    1143.最长公共子序列题目链接文章讲解视频讲解dp[i][j]:表示以text1以i-1为结尾text2以j-1为结尾的最长公共子序列为dp[i][j]递推公式:如果text1[i-1]==text2[j-1]那么dp[i][j]=dp[i-1][j-1]+1;  如果不相同的话,那么dp[i][j]=max(dp[i-1][j],dp[i][j-1]);cl......
  • 昇思25天学习打卡营第8天|使用静态图加速
            神经网络编译框架分为两种运行模式,分别是动态图模式以及静态图模式。MindSpore默认情况下是以动态图模式运行,但也支持手工切换为静态图模式。动态图模式:        该模式类似Python的解释执行方式,一边编译一遍执行。在计算图中定义一个Tensor时,其值就......
  • YC314A [ 20240704 CQYC省选模拟赛 T1 ] 士兵(solider)
    题意给定一张\(n\)个点\(m\)条边的有向图,每条边上有一个字母。\(q\)次询问,每次询问\(s\tot\)中的最短回文路径的长度是多少。\(n\le10^3,m\le10^5\)Sol区间\(\text{dp}\),设\(f_{i,j}\)表示从\(i\)到\(j\)的最短回文路径的长度。每次枚举一条边\(......
  • HMAC SHA256对称加密
    HMACSHA256是一种对称加密算法。以下是关于HMACSHA256以及对称加密和非对称加密的详细解释:HMACSHA256HMAC(Hash-basedMessageAuthenticationCode)是一种基于哈希函数的消息认证码,它通过结合一个秘密密钥和一个哈希算法来生成消息摘要,从而验证消息的完整性和真实性。HMAC......
  • 【计算机毕业设计】025基于weixin小程序移动学习平台
    ......
  • 内存管理-14-内核文档翻译-1-reserved-memory.txt
    本文翻译自:msm-5.4/arch/arm64/boot/dts/vendor/bindings/reserved-memory/reserved-memory.txt***Reserved内存区域***保留内存被指定为/reserved-memory节点下的一个节点。操作系统应将保留内存排除在正常使用之外,可以创建子节点来描述特定的保留(从正常使用中排除)内存区域......