基于weka的数据库挖掘➖聚类方法#DBSCAN算法

基于weka的数据库挖掘➖聚类方法#DBSCAN算法

关于作者

  • 作者介绍

🍓 博客主页:作者主页

🍓 简介:JAVA领域优质创作者🥇、一名初入职场小白🎓、曾在校期间参加各种省赛、国赛,斩获一系列荣誉 🏆

🍓 关注我:关注我学习资料、文档下载统统都有,每日定时更新文章,励志做一名JAVA资深程序猿👨‍💻


目标

掌握weka中数据聚类的具体流程

内容

利用weka实现K-means聚类和DBSCAN聚类

密度聚类方法

密度聚类方法的指导思想是,只要一个区域中的点的密度大于某个域值,就把它加到与之相近的聚类中去。

这类算法能克服基于距离的算法只能发现"类圆形"的聚类的缺点,可发现任意形状的聚类,且对噪声数据不敏感但计算密度单元的计算复杂度大,需要建立空间索引来降低计算量,且对数据维数的伸缩性较差。

这类方法需要扫描整个数据库,每个数据对象都可能引起一次查询,因此当数据量大时会造成频繁的I/O操作。代表算法有:DBSCAN、OPTICS、DENCLUE算法等。

DBSCAN算法

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)一个比较有代表性的基于密度的聚类算法。与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在有"噪声"的空间数据库中发现任意形状的聚类。

概念初识

对象的ε-邻域:给定对象在半径ε内的区域。

核心对象:如果一个对象的ε-邻域至少包含最小数目MinPts个对象,则称该对象为核心对象。

例如,在图5-6中,ε=1cm,MinPts=5,q是一个核心对象。

直接密度可达:给定一个对象集合D,如果p是在q的ε-邻域内,而q是一个核心对象,我们说对象p从对象q出发是直接密度可达的。

例如,在图5-6中,ε=1cm,MinPts=5,q是一个核心对象,对象p从对象q出发是直接密度可达的。


密度可达 :如果存在一个对象链p1,p2,...,p~n~,p~1~=q,p~n~=p,对pi∈D,(1<=i<=n),p~i+1~是从p~i~关于ε和MitPts直接密度可达的,则对象p是从对象q关于ε和MinPts密度可达的。

例如,在图5-7中,ε=1cm,MinPts=5,q是一个核心对象,p1是从q关于ε和MitPts直接密度可达,p是从p~1~关于ε和MitPts直接密度可达,则对象p从对象q关于ε和MinPts密度可达的。


密度相连:如果对象集合D中存在一个对象o,使得对象p和q是从o关于ε和MinPts密度可达的,那么对象p和q是关于ε和MinPts密度相连的。

噪声:一个基于密度的簇是基于密度可达性的最大的密度相连对象的集合。不包含在任何簇中的对象被认为是"噪声"。

DBSCAN通过检查数据集中每个对象的ε-邻域来寻找聚类。如果一个点p的ε-邻域包含多于MinPts个对象,则创建一个p作为核心对象的新簇。然后,DBSCAN反复地寻找从这些核心对象直接密度可达的对象,这个过程可能涉及一些密度可达簇的合并。当没有新的点可以被添加到任何簇时,该过程结束。具体如下:

DBSCAN算法描述

输入:包含n个对象的数据库,半径ε,最少数目MinPts。

输出:所有生成的簇,达到密度要求。

  1. REPEAT
  2. 从数据库中抽取一个未处理过的点;
  3. IF 抽出的点是核心点 THEN找出所有从该点密度可达的对象,形成一个簇
  4. ELSE 抽出的点是边缘点(非核心对象),跳出本次循环,寻找下一点;
  5. UNTIL 所有点都被处理;

下面给出一个样本事务数据库(见左表),对它实施DBSCAN算法。 根据所给的数据通过对其进行DBSCAN算法,以下为算法的步骤(设n=12,用户输入ε=1,MinPts=4)

步骤:

第1步,在数据库中选择一点1,由于在以它为圆心的,以1为半径的圆内包含2个点(小于4),因此它不是核心点,选择下一个点。

第2步,在数据库中选择一点2,由于在以它为圆心的,以1为半径的圆内包含2个点,因此它不是核心点,选择下一个点。

第3步,在数据库中选择一点3,由于在以它为圆心的,以1为半径的圆内包含3个点,因此它不是核心点,选择下一个点。

第4步,在数据库中选择一点4,由于在以它为圆心的,以1为半径的圆内包含5个点,因此它是核心点,寻找从它出发可达的点(直接可达4个,间接可达2个),聚出的新类{1,3,4,5,9,10,12},选择下一个点。

第5步,在数据库中选择一点5,已经在簇1中,选择下一个点。

第6步,在数据库中选择一点6,由于在以它为圆心的,以1为半径的圆内包含3个点,因此它不是核心点,选择下一个点。

第7步,在数据库中选择一点7,由于在以它为圆心的,以1为半径的圆内包含5个点,因此它是核心点,寻找从它出发可达的点,聚出的新类{2,6,7,8,11},选择下一个点。

第8步,在数据库中选择一点8,已经在簇2中,选择下一个点。

第9步,在数据库中选择一点9,已经在簇1中,选择下一个点。

第10步,在数据库中选择一点10,已经在簇1中,选择下一个点。

第11步,在数据库中选择一点11,已经在簇2中,选择下一个点。

第12步,选择12点,已经在簇1中,由于这已经是最后一点所有点都以处理,程序 终止。

具体实现

1)打开weka,加载weather.numeric.arff,切换至Cluster标签页,选择SimpleKMeans算法,保持默认参数,生成2个簇,单击Ignore attributes按钮,选择play属性为忽略属性,单击start运行。

2)得到如下结果,最终的聚类结果以表格形式显示(如下图):行对应属性名,列对应簇中心。如果是数值型属性,则显示平均值,若是标称型属性,显示簇所在列对应的属性标签。

3)选中结果列表中的SimpleKmeans算法,右键,选择Visualize cluster assignment,弹出可视化窗口,点击❌,查看每个点的情况,思考聚类的准确性

可以发现,聚类效果

4)加载鸢尾花,切换到cluster,choose-weka-DBSCAN,设置DBSCAN的参数如下,半径为0.2,minPoint为5

5)同样忽略类别属性,单击ignore atrributes,,选择class属性,,单击start运行,得如下结果,簇0有49个实例,簇1有98个实例,还有三个实例未能聚类,根据原始样本,我们知道总共有三个类别,山鸢尾、变色鸢尾、维吉尼亚鸢尾,但现在聚类结果聚成了两个簇

6)故更改DBSCAN的参数,将minPoints设为2,再观察结果,会发现生成了三个簇(自行完成),但根据原始文本,每个类别有 50个样本,所以聚成的结果依然不准确,分析结果,思考有多少样本被分错了

7)更改DBSCAN的参数,将minPoints设为2,选中结果列表中的DBSCAN算法,右键,选择Visualize cluster assignment,弹出可视化如下窗口

8)点击可视化窗口中的某一个点(叉号会弹出具体这个点的信息,

要求解释这个点的含义

所学新知

K-Means的主要优点在于原理比较简单,实现也是很容易,收敛速度快。聚类效果较优。算法的可解释度比较强。主要需要调参的参数仅仅是簇数k。DBSCAN聚类算法与K-Means 比较起来,不需要输入要划分的聚类个数;聚类簇的形状没有偏倚;可以在需要时输入过滤噪声的参数。DBSCAN可以处理不同大小和不同形状的簇,K-means很难处理非球形的簇和不同形状的簇。K-means可以发现不是明显分离的簇,即便簇有重叠也可以发现,但是DBSCAN会合并有重叠的簇。

相关推荐
艾派森10 分钟前
大数据分析案例-基于随机森林算法的智能手机价格预测模型
人工智能·python·随机森林·机器学习·数据挖掘
hairenjing112312 分钟前
在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序
android·人工智能·windows·macos·智能手机
小蜗子16 分钟前
Multi‐modal knowledge graph inference via media convergenceand logic rule
人工智能·知识图谱
SpikeKing29 分钟前
LLM - 使用 LLaMA-Factory 微调大模型 环境配置与训练推理 教程 (1)
人工智能·llm·大语言模型·llama·环境配置·llamafactory·训练框架
黄焖鸡能干四碗1 小时前
信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)
大数据·人工智能·软件需求·设计规范·规格说明书
1 小时前
开源竞争-数据驱动成长-11/05-大专生的思考
人工智能·笔记·学习·算法·机器学习
ctrey_1 小时前
2024-11-4 学习人工智能的Day21 openCV(3)
人工智能·opencv·学习
攻城狮_Dream1 小时前
“探索未来医疗:生成式人工智能在医疗领域的革命性应用“
人工智能·设计·医疗·毕业
忘梓.1 小时前
划界与分类的艺术:支持向量机(SVM)的深度解析
机器学习·支持向量机·分类
Chef_Chen1 小时前
从0开始机器学习--Day17--神经网络反向传播作业
python·神经网络·机器学习