Python学习(2):在单机机器学习,使用Dask实现鸢尾数据集 Iris 的分类任务

embedded/2024/9/25 8:29:42/

目录

一、源码来源

二、鸢尾花数据集的品种分类

1、数据处理步骤

(1)数据集加载

(2)准备特征和标签

(3)训练集和测试集划分

2、安装必需的软件包

3、运行程序

三、信用卡欺诈数据集检测信用卡交易中的欺诈行为

1、数据处理过程

(1)数据读取和缩放

(2)数据预处理

(3)模型训练和预测

(4)评估和可视化

3、运行过程


本来是想了解完Dask后做一个分布式的测试,在gitee上找了一个源码库,结果太简单了没有任何参考价值,将就看吧。

一、源码来源

MLsys_work1: 机器学习系统(MLsys)课程的第一次实验作业,作业要求是 分别在单机机器学习, Dask 分布式机器学习和 Pytorch 深度学习平台上,实现对于鸢尾数据集 Iris 的分类任务 - Gitee.com

二、鸢尾花数据集的品种分类

首先说明源码是使用了经典的鸢尾花数据集(Iris dataset),该数据集包含了三种不同种类的鸢尾花的测量数据。

鸢尾花数据集是一个常用的测试数据集,这些数据通常用于分类任务的示例和测试,用于演示和验证机器学习算法的分类能力。

1、数据处理步骤

该代码使用鸢尾花数据集进行了简单的特征选择(使用全部四个特征),并进行了简单的数据划分(训练集和测试集)。

(1)数据集加载

python">iris = datasets.load_iris()

这一行代码使用 sklearn.datasets 模块中的 load_iris() 函数加载了鸢尾花数据集。

(2)准备特征和标签

python">X_train, X_test, y_train, y_test = train_test_split(iris_X, iris_y, train_size=.7)

iris.data 包含了鸢尾花的四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度。

iris.target 包含了每个样本对应的类别标签,分别代表三种不同的鸢尾花品种。

(3)训练集和测试集划分

python">X_train, X_test, y_train, y_test = train_test_split(iris_X, iris_y, train_size=.7)

使用 train_test_split 函数将数据集划分为训练集(70%)和测试集(30%)。设置 train_size=.7 表示训练集占总数据的70%。

2、安装必需的软件包

pip install dask distributed matplotlib seaborn scikit-learn imbalanced-learn joblib

3、运行程序

运行src_svm目录中的joblib_svm.py文件。

python">python3 joblib_svm.py

在这个文件中,是使用支持向量机(SVM)进行分类,预测鸢尾花的品种。

  • 使用了 sklearn 提供的 datasets.load_iris() 加载数据。
  • 使用了 svm.SVC 作为分类器。
  • 使用 dask.distributed 来分布式执行任务。
  • 评估模型性能时,计算了准确率、召回率、F1 值等指标,并绘制了混淆矩阵的热力图。

执行结果:

其中上半部分为性能变量:

  1. precision:精确度,即预测为某一类别的样本中,真正属于这一类别的比例。
  2. recall:召回率,即真正属于某一类别的样本中,被模型预测为这一类别的比例。
  3. f1-score:F1 分数,综合考虑精确度和召回率的加权平均值,用于衡量模型在各个类别上的综合表现。
  4. accuracy:准确率,即模型在整个测试集上预测正确的比例。
  5. macro avg: 对所有类别的指标取算术平均值,每个类别的权重相同。
  6. weighted avg: 对所有类别的指标取加权平均值,权重为各类别在测试集中的比例。

下半部分为混淆矩阵。随机森林的混淆矩阵(Confusion Matrix)是一个 3x3 的矩阵,用于评估分类模型在多分类问题上的性能:

  • 矩阵的行表示真实的类别(Actual),列表示模型预测的类别(Predicted)。
  • 每一个单元格中的值表示真实类别和预测类别的交集数量。

在这里表示:

  • 第一行 [17 0 0] 表示真实类别为 0 的样本,模型预测为类别 0 的有 17 个,预测为类别 1 和类别 2 的都没有。
  • 第二行 [ 0 10 2] 表示真实类别为 1 的样本,模型预测为类别 1 的有 10 个,预测为类别 0 的没有,预测为类别 2 的有 2 个。
  • 第三行 [ 0 0 16] 表示真实类别为 2 的样本,模型预测为类别 2 的有 16 个,预测为类别 0 和类别 1 的都没有。

三、信用卡欺诈数据集检测信用卡交易中的欺诈行为

源码的主要作用是构建一个机器学习模型来预测信用卡交易是否为欺诈。使用的数据集是名为 creditcard.csv 的CSV文件,位于当前工作目录下的 ./dataset/creditcard.csv

1、数据处理过程

(1)数据读取和缩放

使用 Pandas 的 read_csv 函数读取 creditcard.csv 文件。

使用 RobustScaler 对 AmountTime 列进行缩放,以减少异常值的影响。

(2)数据预处理

将数据集划分为特征 (X) 和标签 (y)。

使用 train_test_split 函数将数据集划分为训练集 (X_train_resampled, y_train_resampled) 和测试集 (x_test, y_test),并且通过 stratify=y 参数保持了训练集和测试集中类别的比例一致。

使用 SMOTE 进行过采样,以处理类别不平衡问题,通过 fit_resample 方法生成了平衡后的训练集 (X_train_resampled, y_train_resampled)。

(3)模型训练和预测

使用随机森林分类器 (RandomForestClassifier),设置了 n_estimators=100 用于构建 100 棵决策树,criterion='gini' 使用基尼不纯度作为划分标准,n_jobs=4 表示使用 4 个并行作业。

使用 joblib.parallel_backend("dask") 实现在 Dask 集群中并行训练模型。

对测试集 x_test 进行预测,并计算模型的准确率、召回率和 F1 值。

(4)评估和可视化

打印模型的准确率、召回率、F1 值以及训练和预测所花费的时间。

输出分类报告 (classification_report) 和混淆矩阵 (confusion_matrix),用于评估模型在测试集上的性能。

绘制混淆矩阵的热图,帮助可视化模型预测结果和真实结果之间的差异。

3、运行过程

提示没有数据集文件:

我去gitee上找了个数据集:Datasets: jbrownlee/Datasets

下载后转到数据集目录记得解压:

unzip creditcard.csv.zip

but这个数据集不对,暂时放置。运行后提示少了一行关键字:

后续找到正确的数据集后再运行。


http://www.ppmy.cn/embedded/92701.html

相关文章

CPU 流水线技术初识

在当今数字化的时代,计算机已经成为我们生活中不可或缺的一部分。而在计算机的核心部位,中央处理器(CPU)则是其重要的组成部分。CPU 的性能决定了计算机的运行速度和处理能力,而流水线技术则是 CPU 性能提升的关键所在…

FPGA开发——IP核的介绍

一、简介 在我们在使用FPGA进行相关开发,设计涉及到复杂的开发时往往需要编写大量的代码对于想要实现的功能进行一个实现,这不仅增加了我们的工作量,往往还会增加开发难度。今天我们就来引入在FPGA开发中IP核的相关概念。 在FPGA&#xff08…

gdb上手简述

文章目录 1. gdb通用命令1.1 常用命令1.2 查看内存1.3 屏蔽信号 2. gdb跟踪调试2.1 debug版本2.2 gdb多线程调试 3. gdb内存监控3.1 watch3.2 mprotect内存保护3.3 perf_event数据断点API进行内存保护 4. 调试技巧4.1 gdb不阻塞进程运行4.2 查看传参、返回值 1. gdb通用命令 1…

【Android面试八股文】荣耀面试算法题:输出所有的水仙花数

文章目录 一、水仙花数的定义二、算法实现 一、水仙花数的定义 要输出所有的水仙花数,我们需要先了解什么是水仙花数。 水仙花数(Narcissistic number),也称为自恋数、自幂数、阿姆斯特朗数,是指一个 n 位的正整数&a…

Qt中SQLite数据库的使用

一、安装SQLite 在Qt6中,不再支持 SQLite2,只支持 SQLite3 。因此,有两种方式使用 SQLite,一种是在 SQLite 官网安装 SQLite3,另外一种是直接安装 SQLite Expert。 SQLite Expert 内置了 SQLite。这意味着用户在安装 S…

未来已来:人工智能如何重塑Facebook的用户体验?

在数字化时代的浪潮中,人工智能(AI)正成为推动技术进步和用户体验优化的核心力量。Facebook(现Meta Platforms)作为全球领先的社交媒体平台,正在充分利用人工智能技术,以重塑用户体验&#xff0…

【C语言】预处理详解(下)

文章目录 前言6. 宏和函数的对比7. #和##7.1 #运算符7.2 ##运算符(运用较少,了解即可) 8. 命名的约定9. #undef (了解即可)10. 条件编译(重点)11. 头文件的包含11.1 头文件被包含的方式&#xf…

【nginx】解决k8s中部署nginx转发不会自动更新域名解析启动失败的问题

文章目录 1. 问题2.解决办法3.扩展说明3.1 DNS解析阶段划分3.2 问题说明3.2.1 先看/etc/resolv.conf说明3.2.2 针对第一个问题3.2.3 针对第二个问题 【后端】NginxluaOpenResty高性能实践 参考: https://blog.csdn.net/u010837612/article/details/123275026 1. 问…