《数据挖掘基础》实验:Weka平台实现分类算法-程序员宅基地

技术标签: 数据挖掘原理  机器学习  c4.5算法  KNN  数据挖掘  分类  

实验目的

进一步理解分类算法(决策树、贝叶斯),利用weka实现数据集的分类处理,学会调整模型参数,以图或树的形式给出挖掘结果,并解释规则的含义。

实验要求

随机选取数据集(UCI或data文件夹),完成以下内容:(用三种方法:KNN、C4.5算法、贝叶斯算法)

  • 文件导入与编辑
  • 参数设置说明
  • 结果截图
  • 结果分析与对比

实验过程

1. 文件导入与编辑

单击Open file,选择自带数据集中的“iris.arff”数据集,数据集如图1所示。

图1 iris数据集

图1 iris数据集

对于iris数据集,它包含了150个实例(每个分类包含50个实例),共有sepal1ength、sepal width、petal length、petal width和class五种属性。期中前四种属性为数值类型,class属性为分类属性,表示实例所对应的的类别。该数据集中的全部实例共可分为三类:Iris Setosa、Iris Versicolour和Iris Virginica。
实验数据集中所有的数据都是实验所需的,不存在属性筛选的问题。

2. 参数设置说明

2.1 KNN算法

单击Classify->choose->lazy->IBK选择KNN算法,如图2所示。

图2 KNN算法选择

图2 KNN算法选择

单击choose右侧的文本框,弹出参数设置窗口,如下图所示。

图3 KNN算法参数设置

图3 KNN算法参数设置

KNN的值即算法中k的值,该值的选择会对算法的结果产生重大影响。
如果k值较小,就相当于用较小邻域中的训练实例进行预测,极端情况下k=1,测试实例只和最接近的一个样本有关,训练误差很小(0),但是如果这个样本恰好是噪声,预测就会出错,测试误差很大。也就是说,当k值较小时,会产生过拟合的现象。
如果k值较大,就相当于用很大邻域中的训练实例进行预测,极端情况是k=n,测试实例的结果是训练数据集中实例最多的类,这样会产生欠拟合。
在应用中,一般选择较小k并且k是奇数。通常采用交叉验证的方法来选取合适的k值,经过多次验证,选择合适的k值为7。

2.2 C4.5算法

单击Classify->choose->trees->J48选择C4.5算法,如图4所示。

图4 C4.5算法选择

图4 C4.5算法选择

单击choose右侧的文本框,弹出参数设置窗口,如下图所示。

图5 C4.5 算法参数设置

图5 C4.5 算法参数设置
  • confidenceFactor为置信度,设为0.25。
  • minNumObj表示决策树里每个决策节点最少需要的实例个数。越大则模型复杂度越低,也越不容易过拟合。

2.3 贝叶斯算法

单击Classify->choose->bayes->NaiveBayes选择贝叶斯算法,如图6所示。

图6 贝叶斯算法选择

图6 贝叶斯算法选择

单击choose右侧的文本框,弹出参数设置窗口,如下图所示。

图7 贝叶斯算法参数设置

图7 贝叶斯算法参数设置

结果截图

1. KNN算法

分类结果如图8所示,可知正确率为96.6667%,其中150个实例中的145个被正确分类,5个被错误分类。根据混淆矩阵,被错误分类实例的为: 2个c类实例被错误分类到b,3个b类实例被错误分类到c。

图8 KNN算法结果

图8 KNN算法结果

2. C4.5算法

分类结果如图9所示,可知准确率为96%,其中150个实例中的144个被正确分类,6个被错误分类。根据混淆矩阵,被错误分类实例的为:2个b类实例被错误分类到c,1个b类实例被错误分类到a;3个c类实例被错误分类到b。生成的决策树为图10。

图9 C4.5算法结果

图9 C4.5算法结果

图10 决策树

图10 决策树

3. 贝叶斯算法

分类结果如图11所示,可知准确率为96%,其中150个实例中的144个被正确分类,6个被错误分类。根据混淆矩阵,被错误分类实例的为:2个c类实例被错误分类到b,4个b类实例被错误分类到c。

图11 贝叶斯算法结果

图11 贝叶斯算法结果

结果分析

对于该数据集,KNN算法准确率更高,但K值的选择是个难点,较好的K值可以带来较优的结果,反之亦然。C4.5算法与朴素贝叶斯算法准确率相同,但贝叶斯算法在对不同实例错误分类较为不均匀,而C4.5算法则对b、c错误分类个数较为均匀,这在一定程度上会影响分类结果,如果侧重于实例c的分类则贝叶斯算法较好,而实例b则C4.5算法较好。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36949278/article/details/122061663

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签