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

目录

一、源码来源

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

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.rhkb.cn/news/394305.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【VScode】如何在anaconda虚拟环境中打开vscode项目

文章目录 【必备知识】打开anaconda虚拟环境切换到项目工作目录激活anaconda虚拟路径让vscode从当前目录打开 【必备知识】 anaconda环境变量配置及配置python虚拟环境 https://blog.csdn.net/xzzteach/article/details/140621596 打开anaconda虚拟环境 切换到项目工作目录 …

LabVIEW液压传动系统

开发了一种高效的液压传动系统,其特点在于采用LabVIEW软件与先进的硬件配合,实现能量的有效回收。此系统主要应用于工业机械中,如工程机械和船机械等,通过优化液压泵和马达的测试台设计,显著提高系统的能效和操作性能。…

SpringBoot 集成 Sharding-JDBC 实现读写分离、分库分表

文章目录 一、Sharding-JDBC的应用场景二、SpringBoot 集成 Sharding-JDBC2.1、前期准备2.2、导入pom.xml依赖包2.3、结构代码实现2.3.1、MybatisPlusConfig(分页插件)2.3.2、TOrder(订单对象)2.3.3、TOrderMapper(订单…

一样都是虚拟化技术,堆叠和M-LAG差异在哪?

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 早上好,我的网工朋友。 随着信息技术的快速发展,网络架构也在不断地演进以满足日益增长的需求。 其中,虚拟化技…

没有mac电脑ios上架截屏截图的最新方法

很多人使用uniapp或其他跨平台框架开发ios的app,上架的时候都会遇到一个问题,上架的时候需要各种尺寸的设备来做ios截屏,比如目前最新的要求是,需要对6.7寸、6.5寸和5.5寸的iphone进行截屏,假如支持ipad则还需要对ipad…

java之拼图小游戏(开源)

public class LoginJFrame extends JFrame {//表示登录界面,以后所有跟登录相关的都写在这里public LoginJFrame() {//设置界面的长和宽this.setSize(603,680);//设置界面的标题this.setTitle("拼图登陆界面");//设置界面置顶this.setAlwaysOnTop(true);/…

兼容性测试详解

目录 前言1. 兼容性测试的定义和重要性1.1 兼容性测试的定义1.2 兼容性测试的重要性 2. 兼容性测试的类型2.1 跨浏览器测试2.1.1 跨浏览器测试的挑战2.1.2 跨浏览器测试的方法 2.2 跨平台测试2.2.1 跨平台测试的挑战2.2.2 跨平台测试的方法 3. 兼容性测试的步骤和策略3.1 测试计…

必了解的 20 个 AI 术语解析(下)

AI 领域的基础概念和相关技术有很多,这篇文章里,作者就深入浅出地介绍了相应的内容,感兴趣的同学们,不妨来看一下。 必了解的 20 个 AI 术语解析(下)© 由 ZAKER科技 提供 本文专为非技术背景的 AI 爱…

【源码+文档+调试讲解】活力健身馆管理系统

摘 要 活力健身馆管理系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品,体验高科技时代带给人们的方便,同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓,iOS相比较起来&am…

html+css 实现hover选择按钮

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

【Android】跨程序共享数据——内容提供器初识

跨程序共享数据——探究内容提供器 内容提供器的简介 主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访数据的安全性。目前,使用内容提供器是Android实现跨程序共享数据的标准方式。…

opencv-图像透视变换

透射变换是视角变化的结果,是指利用透视中心,像点,目标点共线的条件,按透视旋转定律使承影面(透视面)绕迹线(透视轴旋转某一角度,破坏原有的投影光束,仍能保持承影面上投影几何图形不变的变化) 它的本质将图…

【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. 问…

【二分查找】3143. 正方形中的最多点数

本文涉及的基础知识点 C二分查找 LeetCode3143. 正方形中的最多点数 给你一个二维数组 points 和一个字符串 s ,其中 points[i] 表示第 i 个点的坐标,s[i] 表示第 i 个点的 标签 。 如果一个正方形的中心在 (0, 0) ,所有边都平行于坐标轴&…

【数据结构入门 】栈

目录 前言 一、栈的概念及结构 二、栈的实现 1. 栈的声明 2.初始化栈 3. 栈的销毁 4.判断是否为空栈 5.入栈(只能插入栈顶元素) 6. 出栈(只能从栈顶删除) 7.栈的大小 8.获取栈顶元素 总结 前言 在计算机科学中&#xf…

【MySQL 01】在 Ubuntu 22.04 环境下安装 MySQL

文章目录 🌈 1. 说明🌈 2. 卸载不必要的环境🌈 3. 安装 MySQL🌈 4. 启动和关闭 MySQL 服务🌈 5. 临时登录 MySQL🌈 6. 设置 MySQL 密码🌈 7. 配置 MySQL 🌈 1. 说明 在安装与卸载中…

Python面试宝典第29题:袋鼠过河

题目 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子。每隔一米就有一个桩子,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳得更远。每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量…

Maven实战(五)- Nexus 私服安装与使用

Maven实战(五)- Nexus 私服安装与使用 文章目录 Maven实战(五)- Nexus 私服安装与使用1.安装Nexus1.1.下载安装包1.2.Nexus启动命令1.3.登陆Nexus 2.仓库与仓库组2.1.内置仓库2.2.仓库分类2.3.创建宿主仓库2.4.创建代理仓库2.5.创…

CSS基础知识day4

目录 1. 浮动 1.1 传统网页布局的三种方式 1.2 标准流(普通流/文档流) 1.3 为什么需要浮动? 1.4 什么是浮动? 1.5 浮动特性(重难点) 1.6 浮动元素经常和标准流父级搭配使用 2.常见网页布局 2.1 常…

WEB应用(十四)---文件上传

什么是文件上传漏洞 文件上传是Web应用的常见功能,允许用户上传图片、视频及其他文件类型文件。如果用户上传的是木马文件,则服务器就会收到攻击。 对于这个漏洞的练习有一个专门的靶场,即upload-labs,这个的安装可以在windows中使…