基于weka的数据库挖掘➖数据离散化
关于作者
- 作者介绍
🍓 博客主页:作者主页
🍓 简介:JAVA领域优质创作者🥇、一名初入职场小白🎓、曾在校期间参加各种省赛、国赛,斩获一系列荣誉🏆
🍓 关注我:关注我学习资料、文档下载统统都有,每日定时更新文章,励志做一名JAVA资深程序猿👨💻
数据离散化
数据离散化(Data Discretization)是数据挖掘中的一种常见数据预处理技术,用于将连续型数据转换为离散型数据。它通过将连续值划分为不同的区间或将其映射到离散的取值,从而简化数据分析和模型构建过程。
数据离散化的目的是减少数据的复杂性和噪音的影响,以及处理一些基于离散值操作的算法或方法。它可以提高某些数据挖掘任务的效率和准确性,例如分类、关联规则挖掘和聚类分析。
以下是常见的数据离散化方法:
- 等宽离散化(Equal Width Discretization):将连续值范围划分为相等宽度的区间。例如,将年龄划分为几个范围,如 0-18、18-40、41-60 、61-90 等。
- 等频离散化(Equal Frequency Discretization):将数据划分为具有相等观测数量的区间。这种方法可以确保每个区间内的数据点数量相等。例如,将数据按照百分位数划分为若干个区间。
- 基于聚类的离散化(Cluster-Based Discretization):使用聚类算法,如K均值聚类,将数据点划分为不同的簇,然后将每个簇视为一个离散值。
- 自定义离散化:根据具体的需求和领域知识,设计自定义的离散化方法。例如,将连续的数值转换为分类变量,如将温度划分为”低温”、”中温”和”高温”。
在选择数据离散化方法时,需要考虑数据的分布、任务的要求以及对离散化后数据的理解和解释能力。离散化可能会导致信息损失,因此需要在数据挖掘过程中进行权衡和评估。
总的来说,数据离散化是数据挖掘中的一项非常重要预处理技术,用于将连续型数据转换为离散型数据,方便后续的数据分析和模型构建。
应用:使用 weka 将数据离散化
Weka 中数据类型有标称型(nominal),只能取预定义值列表中的一个;数值型(numeric),只能是实数或整数;字符串类型(String),由双引号引用的任意长度的字符列表;还有日期型(Date)和 关系型(Relational)。
如果数据集包含数值型属性,所用的学习方案只能处理标称型属性的分类,则将数值型属性离散化是必要的。有两种类型的离散化技术-无监督离散和有监督离散化,前者不需要也不关注类别属性值,后者在创建间隔时考虑实例的类别属性值。离散化数值型属性的直观方法是将值域分隔为多个预先设定的间隔区间。
1、无监督离散化有等宽和等频离散化。
将其加载至探索者界面,在 Preprocess标签页中查看 RI 属性直方图如下:
等宽离散化
依次打开choose—>weka—>filters—>unsupervised—>attribute—>Discretize过滤器。保持默认参数不变,点击 Apply,出现如下图:
等频离散化
设置 Discretize 中的值为 true。得到等频离散化后的 RI 属性,如下图:
我们可能会产生错觉,等频离散化后形成的直方图似乎会等高,但是有兴趣的可以自行看看 Ba,Fe 属性的等频离散化,是否会等高,思考为什么会这样。
2、有监督离散化
首先打开 data 数据集中的鸢尾花数据集,即 iris.arff 文件,数据集中各属性如下:
Weka 中打开 iris 数据集,显示如下图
依次点开choose—>weka—>filters—>supervised—>attribute—>Discretize,点击 Apply,,打开可视化窗口,发现各个属性的取值范围如下:
所学新知
通过这次数据挖掘的实验,配置了weka环境变量,出现了很多的问题,在配置WEKA_HOME的时候需要注意路径的正确,之后需要再JAVA_HOME配置中配置连接数据库的jar包,之后再weka下的 experiment
的DatabaseUtils.props
文件进行环境的配置,这一步是非常重要的。配置好环境变量之后一般我们重点使用explorer
,打开后,我们可以看到顶层的六个标签,分别是:Preprocess
、Classify
、Cluster
、Associate
、 Select attributes
、Visualize
。在preprocess
里面有个 open
控件,是用来打开sourcefile
的,weka
支持的文档格式为.arff,其实是一个文本数据集。也支持URL或者DB打开方式,并且支持数据转换。打开数据文件后,可以使用Filter进行一下过滤,相当于”预处理的预处理”。Filter提供了许多算法来过滤数据,比如 filters/unsupervised/instance/normalize
应该是一个标准化的算法。当然,也可以编写你自己的算法!这时窗体上已经给出这个数据集的一些基本特征了,比如有多少属性,各属性的一些简单统计量,右下方还给出一些可视化效果比如柱状图。
后语
厂长写博客目的初衷很简单,希望大家在学习的过程中少走弯路,多学一些东西,对自己有帮助的留下你的赞赞👍或者关注➕都是对我最大的支持,你的关注和点赞给厂长每天更文的动力。
对文章其中一部分不理解,都可以评论区回复我,我们来一起讨论,共同学习,一起进步!