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

news2024/9/23 19:25:32

目录

一、源码来源

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

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)数据集加载

iris = datasets.load_iris()

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

(2)准备特征和标签

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

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

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

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

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文件。

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.coloradmin.cn/o/1989748.html

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

相关文章

全网最详细的LVS实战详解

一、Lvs-nat实战部署 1、准备 设置好网卡信息 2、基础环境搭建详情 ①调度器LVS:网卡ens160(NAT模式)、网卡ens224(仅主机模式),使其可处于不同的VLAN段 为网卡ens160设置IP vmset.sh ens160 172.25.254.100 lvs.zf.org为网卡ens224设置IP vmset.sh ens224 192.…

在MAC安装Lazarus 起点 - 我们的第一个Lazarus程序!

安装Lazarus 首先到Lazarus官网,找到合适的版本下载页面,比如Mac的版本: https://sourceforge.net/projects/lazarus/files/Lazarus%20macOS%20x86-64/Lazarus%203.4/ 将三个文件都下载到本地,需要安装这三个文件: …

Python学习(1):使用Python的Dask库实现并行计算

目录 一、Dask介绍 二、使用说明 安装 三、测试 1、单个文件中实现功能 2、运行多个可执行文件 最近在写并行计算相关部分,用到了python的Dask库。 Dask官网:Dask | Scale the Python tools you love 一、Dask介绍 Dask是一个灵活的并行和分布式…

C语言 ——— 学习并使用字符分类函数

目录 学习isupper函数 学习isdigit函数 学习tolower函数 将输入的字符串中把大写字母转换为小写字母并输出 学习isupper函数 参数部分: 形参需要传递的是一个字母,字符在ASCII码表上是以整型存储的,所以实参部分用(int c)没有问题 返回…

HarmonyOS笔记3:从网络数据接口API获取数据

面向HarmonyOS的移动应用一般采用MVVM模式(见参考文献【1】),其中: M(Model层):模型层,存储数据和相关逻辑的模型。它表示组件或其他相关业务逻辑之间传输的数据。Model是对原始数据的进一步处理…

享界S9别乱选,定价有大玄机!

文 | AUTO芯球 作者 | 雷慢 享界S9刚上市, 就有人傻钱多、工作忙的老大哥来问我, 两个版本怎么选? 这不巧了吗,论华为车系,我是资深用户, 常开问界M9,试过智界S7,问界M7&#x…

PUA自己到无法自拔,或许是你过度信奉【优绩主义】

本文算是人文社科心理篇的第二期,不时发一些【理性】的【鸡汤】,或许对你认识社会本质有所帮助~ 一.定义 顾名思义,从理科生的角度来说,【优绩主义】以优秀的成绩作为评判人生是否成功的极大型指标,在东亚的【休息羞…

性能优化之自定义指令实现图片懒加载

1)图片懒加载 是常见的用于在页面滚动时动态加载图片,而不是在页面加载时一次性加载所有图片。性能优化必备提高页面加载速度的手段,特别是在包含大量图片的网站上。 图片懒加载的原理,其实就是,当图片出现在视口内时…

数据分析:宏基因组的荟萃分析之MMUPHin

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 介绍 批次效应是实验中由于样本处理和测序技术变异引起的非生物学差异,可能干扰研究结果。这种效应难以完全消除,但可通过方法如PCA、PC…

【Vue3】Pinia getters

【Vue3】Pinia getters 背景简介开发环境开发步骤及源码 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本…

求职leetcode题目(6)

1.简化路径 解题思路: 根据题意,使用栈进行模拟即可。 具体的,从前往后处理 path,每次以 item 为单位进行处理(有效的文件名),根据 item 为何值进行分情况讨论: item 为有效值 :存…

AQS框架

文章目录 概要AQS概述公平锁与非公平锁原理可重入 概要 假设现在需要写一个SDK层面的锁,应该如何实现呢? 初步的思路如下: 搞一个状态标记,用来表示持有或未持有锁,但得是 volatile 类型的保证线程可见性。编写一个 …

揭秘公司高效查快递的秘密武器

在快节奏的现代商务环境中,物流管理的效率直接关系到企业的运营成本和客户满意度。对于拥有大量快递业务往来的公司而言,如何快速、准确地追踪每一个包裹的物流信息,成为了一项至关重要的任务。今天,我们将揭秘一款公司高效查快递…

智慧农场数字港系统设计与实现

1 项目介绍 1.1 摘要 农业是一个国家的根本之一,也是国家经济、社会发展的重中之重,从“粮食第一”方针到农业生产市场化,再到乡村振兴、加强扶持农业技术创新和基础建设,我国的农业发展以及走过了几个阶段,并一直在…

Nature教你怎么用GPT做学术

ChatGPT如何助力学术写作:三个关键方式 生成性人工智能(AI)在近年来逐渐成为学术界的热门话题。Dritjon Gruda在2024年4月发表于《Nature》的一篇文章中,详细探讨了ChatGPT如何在学术写作、编辑和同行评审中提供帮助。这篇文章将…

第R2周:Pytorch实现:LSTM-火灾温度预测

nn.LSTM() 函数详解 nn.LSTM 是 PyTorch 中用于创建长短期记忆(Long Short-Term Memory,LSTM)模型的类。LSTM 是一种循环神经网络(Recurrent Neural Network,RNN)的变体,用于处理序列数据&#…

常见的框架漏洞

框架 Web框架(Web framework)或者叫做Web应⽤框架(Web application framework),是⽤于 进⾏Web开发的⼀套软件架构。⼤多数的Web框架提供了⼀套开发和部署⽹站的⽅式。为Web的 ⾏为提供了⼀套⽀持⽀持的⽅法。使⽤Web框架,很多的业务逻辑外的功能不需要⾃…

微步社区帖子中使用编码数据调戏吃瓜群众初探

什么,居然有人在微步社区公然使用编码后的字符串调戏吃瓜群众。 在演练活动的的某一天,微步威胁情报社区突然流行多重编码后内容的帖子。作者本着为人民群众利益着想的目的,结合毕生所学,决定要将这些奇技淫巧和小把戏公之于众。…

R 语言学习教程,从入门到精通,R 判断语句(7)

1、R 判断语句 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。 下面是大多数编程语言中典型的判断结构的一般形式: R 语言…

嵌入式linux系统中USART应用实现

各位开发者大家好,今天主要给大家分享一下,如何在linux系统中使用UART串口的功能。 第一:串口的作用 UART:通用异步收发器简称串口。常用的调试:移植u-boot、内核时,主要使用串口查看打印信息。也可以外接各种模块。 第二:linux系统中的串口 接下来,我们来看一下,linu…