百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

机器学习项目实战7-Python实现决策树算法分类伪钞项目实战

off999 2024-11-26 07:24 40 浏览 0 评论

预设条件

  1. 中级IDE使用经验(Jetbrain Pycharm优先)
  2. 了解Python运行环境及其命令使用
  3. 对Python编程语言有很好的理解
  4. 基本了解Pandas(处理数据框架)、Numpy、Scikit Learn和Matplot库
  5. 一些统计学知识,对分析数据是有帮助的

运行环境

以下运行软件的版本号是经过验证的可成功运行的版本号,以供参考。

编号

软件名称

版本号

1

Python

3.9.19

2

conda

22.9.0

3

pip

23.3.1

4

numpy

1.26.4

5

pandas

2.2.1

6

matplotlib

3.8.4

7

scikit-learn

1.4.2

8

scipy

1.13.0

9

seaborn

0.13.2

10

statsmodels

0.14.2

项目背景

决策树是最常用和最广泛使用的监督机器学习算法之一,它可以执行回归和分类任务。决策树算法背后的直觉很简单,但也非常强大。

对于数据集中的每个属性,决策树算法形成一个节点,其中最重要的属性放置在根节点上。决策树的决策流程是,从根节点开始,沿着条件或“决策”的相应节点向下执行,一直持续到达叶子节点,而叶子节点包含了决策树的预测或结果。

比如考虑这样一个场景:有一个人向你借车给他开,你需要决定是否把车借给他,这里有几个因素可以帮助你做出决定:

  1. 这个人是亲密的朋友还是只是熟人?如果对方只是熟人,那就拒绝这个请求;如果这个人是你的朋友,那就进入下一步。
  2. 这个人是第一次借车吗?如果是,把车借给他,否则进入下一步。
  3. 上次他还车的时候车坏了吗?如有,则拒绝;如果没有,就把车借给他。

上述场景的决策树如下所示:

决策树的优点

使用决策树进行预测分析有几个优点:

  1. 决策树可以用来预测连续值和离散值,也就是说,它们对回归和分类任务都很有效
  2. 只需要相对较少的算力来训练算法
  3. 可用于对非线性数据进行分类
  4. 与KNN和其他分类算法相比,非常快速和有效

数据获取

本篇项目实战数据来源于网络,数据项统计如下:

编号

变量名称

描述

1

variance

方差

2

skewness

偏度

3

curtosis

曲率

4

entropy

5

class

分类

数据详情如下(部分展示):

数据预处理

查看元数据

使用pandas工具的info()方法查看元数据:

从图中可以看到:数据集的类型是pandas.core.frame.DataFrame,索引范围从0到1371,一共1372条数据,数据列一共有5个,以及列出了每个列的名称、非空个数、数据类型等信息。

查看数据

使用pandas工具的head()方法查看前5行数据:

使用pandas工具的tail()方法查看最后5行数据:

可以看到数据集有5个数据列,分别是variance、skewness、curtosis、entropy、class。在这5个数据列中,前4个是连续值,最后1个是离散值。

因为本篇是要预测银行现钞的真伪,所以需要基于前4个列来预测最后1列。

Variance是小波变换的方差。这个值用来测量数据点与平均值的距离远近。如果数据点与平均值距离近,则数据的分布就是一个正常分布,也叫对称分布,这种情况是一种良好的分布,是非常容易进行预测的。在当前图像上下文中,这是由小波变换产生的系数的方差。方差越小,系数越接近实际图像。

skewness是小波变换的偏度。偏度是一个连续值,表示分布的不对称性。如果在均值左侧有更多的值,则分布呈负偏态。如果在均值右侧有更多的值,则分布呈正偏态。如果均值,众数和中位数相同,则分布是对称的。分布越对称,越接近正态分布。在目前的情况下,这是由小波变换产生的系数的偏度。越对称,方差、偏度、曲率、熵的系数越接近实际图像。

curtosis(又叫kurtosis)是小波变换的峰度。峰度是一个连续值,像偏度一样,也描述了分布的形状。根据峰度系数(k)的不同,与正态分布相比,一个分布可能或多或少是平坦的,或者在其末端或尾部有或多或少的数据。当分布更加分散和平坦时,它被称为平丘;当它不那么分散而更集中在中间时,成为常峰态;当分布几乎完全集中在中间时,它被称为尖峰态。这与方差和偏度之前的情况相同,分布越常峰态,系数越接近实际图像。

entropy是图像熵。熵也是一个连续值,它通常衡量系统中的随机性或无序性。在图像的上下文中,熵测量像素与其相邻像素之间的差异。系数的熵越大,图像变换时的损失就越大,熵越小,信息损失就越小。

class是分类。class是离散值,有0和1两个值,用来表示钞票是真的还是伪造的。可以使用Pandas的unique()方法检查第5列是否包含0和1。

上面的方法返回一个值为0和1的数组。这意味着class行中包含的值只有0和1。它可以作为我们监督学习的目标。这是一个整数值,当图像是伪造的时为0,当图像是真实的时为1。由于我们有这个class列,其中包含真实和伪造图像的标签,这意味着我们的学习类型是有监督的。

数据描述性统计

通过Pandas工具的describe()方法来查看数据的个数(count)、平均值(mean)、标准差(std)、最小值(min)、分位数(25%位、50%位、75%位)、最大值(max)。如下图所示:

查看数据项比例

由于class列只有0和1,但是它们之间的比例有多少?是0多一些还是1多一些呢?亦或者0跟1一样多?为了获取每个值的比例,可以使用value_counts()方法。

关键代码:

执行结果如下:

从上面执行的结果中可以看到,0有762个,1有610个,0比1多152个,这意味着假钞只比真钞要多一点,但如果假设0有5500个,1有610个,那么会造成更大的差异,这样就会导致对最终结果的负面影响。

为更清晰看出百分比,可以对数据进行归一化处理,处理后的结果如下:

由上图可知,大约56%的数据集是伪造的,44%是真实的,也就是说56:44的比例率,有12%的差异,这在统计学上被认为是一个很小的差异,因为它只是略高于10%,所以数据被认为是平衡的,如果不是56:44的比例,而是80:20或70:30的比例,那么这样的数据就会被认为是不平衡的,对于步平衡的数据需要采取一定的措施消除不平衡,但本文的使用的数据不需要这么做。

通过绘制直方图,可以更加直观的查看数据,可视化结果如下:

从上图可以看出,只有variance基本符合正态分布。

关键代码:

数据缺失值查看

使用Pandas工具的isnull()方法来查看数据项的缺失值情况,如下图所示:

从上图中可以看出,variance、skewness、curtosis、entropy、class等字段都没有缺失值的情况,无须对缺失值情况进行额外处理。

探索性数据分析

特征数据项分布分析

使用双变量分析法查看数值型特征variance、skewness、curtosis、entropy与class数据项之间关系的分布情况,用散点图显示出来。

上面的图形都是两两配对,这里限于篇幅就不全部展示了,大家可以去执行程序来查看每两组特征构建的图形。

当然,也可以把所有的特征分布的散点图构建到一张图形里,这里使用Seaborn库的pairplot()方法来实现。

关键代码:

执行代码,显示出的每组散点图如下所示:

从上图中可以看出,curtosis和variance是最简单的特征组合,它们可以通过一条线就能区分,它们是线性可分隔的。

构建模型

本章节将采用sklearn库中的DecisionTreeClassifier类来构建基础模型,再用该模型进行训练和测试。

数据准备

首先第一步,将数据集中的class列提取出来作为目标特征,然后第二步,将数据集分隔成训练集和测试集。X数据集含variance、skewness、curtosis、entropy列。Y数据集含class列。

X数据集如图所示:

Y数据集如图所示:

关键代码:

把整个数据集分成两个部分,一个部分是训练集,另一个部分是测试集,训练集占整个数据集的80%,测试集占整个数据集的20%。train_test_split()是随机采样,为避免每次运行都会采集到不同的结果,可以给random_state定义一个种子SEED,本例的SEED设置为42。

X_train数据集如图:

X_test数据集如图:

y_train数据集如图:

y_test数据集如图:

关键代码:

统计各个数据集的shape,可以看到训练集有1097条采样数据,测试集油275条采样数据。

训练模型

数据已经准备完毕,我们可以使用sklearn的DecisionTreeClassifier库来对训练集来训练决策树模型。训练模型采用fit()方法进行。

关键代码:

预测数据

模型训练好之后,可以用来对测试集进行预测。

以下是预测代码:

预测出来的结果如下:

评估模型

有几种方法可以将预测结果与实际结果进行比较,它们度量的是分类的不同方面。一些最常用的分类指标如下:

  1. 混淆矩阵(confusion Matrix):

当需要知道每个类别有多少样本是正确的或错误的时候,引入混淆矩阵。混淆矩阵有四个变量,真正例(True Positive, TP)、假正例(False Positive, FP)、真负例(True Negative, TN)、假负例(False Negative, FN)。

Positive/Negative(P/N)是预测结果的正负,True/False(T/F)是对预测结果正确与否的判断。也就是说:

  1. TP是代表实际结果为正例且预测结果是正例,那说明判断是正确的,即TP为预测结果是正例(P),判断是正确的(T);
  2. TN是代表实际结果为负例且预测结果是负例,那说明判断是正确的,即TN为预测结果是负例(N),判断是正确的(T);
  3. FP是代表实际结果为正例但预测结果是负例,那说明判断是错误的,即FP为预测结果是正例(P),判断是错误的(F);
  4. FN是代表实际结果为负例但预测结果是正例,那说明判断是错误的,即FN为预测结果是负例(N),判断是错误的(F);
  1. 精度(Precision):

精度是模型判断为正例的样本中,判断正确的个数占比。

  1. 召回率(Recall):

召回率表示应当被预测的正例中,真正例有多少。

  1. F1评分(F1 score):

F1评分是精确度和召回率的平衡或调和的平均值。最小值为0,最大值为1。当F1评分等于1时,这意味着所有类都被正确预测了,但是这是一个很难用真实数据获得的分数,因为异常数据几乎总是存在的。

用以上指标来进行模型评估,需要导入sklearn的metrics库,这个库里包含了classification_report和confusion_matrix方法,classification_report返回精度、召回率和F1评分。

结果如下:

从上面的分类报告中,可以知道假钞预测的准确率为0.97,召回率为1.00,F1评分为0.98,这些测量值是使用148个样品获得的。与此同时,对于真钞,结果是低一个单位,预测精度为1.00,召回率为0.96,F1评分为0.98,这些测量值使用了127个样品获得的。

结果可视化

对混淆矩阵进行可视化操作,可以使用Seaborn的heatmap()方法。结果如下:

混淆矩阵的图示中,148个class为0的采样中,148个真正例,0个是假正例,同时127个class为1的采样中,122个是真正例,5个是假反例。

结论

本文主要介绍了通过使用决策树算法进行建模和预测的实战项目案例,希望能够帮助你学习和理解决策树算法的核心内容。如果你还想学习更多人工智能/机器学习/深度学习相关的知识,请继续阅读我编写的其他内容的文章。

本文涉及到的机器学习实战项目文件(附带数据+代码+文档)名称如下:

decision_tree.py

data_banknote_authentication.csv

MLAP7-机器学习项目实战7-Python实现决策树算法分类伪钞项目实战.pdf

相关推荐

台式机显卡天梯(笔记本显卡排行天梯图)

丽台显卡性能排行第一的是:丽台QuadroRTX8000第二是:丽台QuadroP620第三的是:丽台QuadroP2000第四是:丽台Quadrop4000第五是:丽台Quadrop1...

win7更换壁纸(win7更换壁纸显示黑色)

1、首先点开桌面左下角的开始按钮然后在弹出的界面中找到控制面板并打开。2、在控制面板界面的个性化专栏中找到在找到屏幕保护程序并打开。3、在打开的新界面中找到屏幕保护程序并将选项更改为“无”保存后就完成...

如何获取windows7正版(如何获得正版win7)

关于这个问题,获得Windows7激活密钥的方法有几种:1.在购买Windows7时,通常会附带一张带有激活密钥的正版产品密钥卡。您可以查看产品盒内的卡片或说明书,以获取此密钥。2.如果您购买...

重装系统win7旗舰版62位(如何用重装系统win7旗舰版)

要重装Windows7系统,可以按照以下步骤进行操作:1.准备计算机:确保计算机已经安装了Windows11操作系统,因为Windows7的兼容性问题可能会影响安装过程。如果计算机上没有安装W...

tp link app(TP LINKapp下载)

tplink手机app官方版是一款专为TP-LINK路由器手机设置应用,能够更好的管理TP-LINK路由器。tplink手机客户端特色1.实时获取路由器状态消息2.本地管理局域网内的TP-LINK路由...

如何彻底关掉windows更新(如果关闭windows更新)

方法一:Windows设置  要想关闭Win10自动更新,比较简单的一种方法就是进入到Windows设置中,将Windows更新直接关闭。步骤如下:  1、按“Windows+I”键,打开Wind...

pe怎么制作u盘启动盘(pe制作u盘启动工具)

制作U盘启动PE的方法:1、准备一个8G或以上容量的U盘,接入电脑,u盘启动PE制作工具会自动识别u盘,2、接着,设置模式和格式,一般默认选择USB—HDD以及NTFS,点击一键制作成U盘启动PE...

iso镜像系统下载(下载iso镜像文件)

vmwareiso镜像文件可以从VMware官网下载。具体的下载步骤如下:1.打开VMware官网,进入产品下载页面。2.在产品下载页面,选择需要下载的VMware产品,比如VMwareWork...

电脑分区工具哪个好用(电脑分区工具下载)

电脑分区助手使用方法1.首先先打开我们的分区助手。2.我们把鼠标放上去然后点击鼠标右键选择合并并分区。3.然后勾选上我们未分配的空间。4.然后就扩展完成了。1、《CrystalDiskMark》是一款...

字体大小怎么调(win10字体大小怎么调)

在大多数文字处理软件和编辑器中,设置字体大小通常是通过以下方法之一完成的:1.使用快捷键:常见的快捷键是使用Ctrl(或Command键)+"+"或"-...

联想电脑重装系统下载(联想系统重装软件)

联想电脑重装系统步骤:1、制作好U盘启动盘,然后把下载的联想win7系统iso文件直接复制到U盘的GHO目录下:2、在联想电脑上插入U盘,重启后不停按F12或Fn+F12快捷键打开启动菜单,选择U盘项...

qq靓号注册入口(qq靓号注册免费申请网址)
qq靓号注册入口(qq靓号注册免费申请网址)

目前是没有qq靓号申请器的,因为qq靓号都是由腾讯qq直售代理的,想要申请只能在会员界面支付若干个月会员便可以获得,不同的靓号价格可能不一样,使用期限必须要有qq超级会员。QQ靓号是腾讯公司推出的一种增值QQ号码,是腾讯QQ新推出的一款邮箱...

2026-01-11 01:03 off999

电脑显示已连接上但是无法上网

排查处理:一、若使用的是公共网络:1.尝试在人流量较少的地方使用,并确认热点可正常使用。2.请确认是否需通过浏览器登录网站注册后才能上网。二、若使用的是家庭网络,建议连接其他wifi或手机个人热点进行...

手动更新显卡驱动(更新显卡驱动教程)

方法如下:1.打开设备管理器。在Windows10中可以键入"设备管理器"来搜索。2.展开"显示适配器"选项。3.右键单击要更新的显卡并选择"更新驱动程...

清理注册表软件(注册表清理工具哪个好)
  • 清理注册表软件(注册表清理工具哪个好)
  • 清理注册表软件(注册表清理工具哪个好)
  • 清理注册表软件(注册表清理工具哪个好)
  • 清理注册表软件(注册表清理工具哪个好)

取消回复欢迎 发表评论: