DBSCAN对具有相同属性的另一个数据集进行分类
你好,
所以我的想法是用一个训练好的DBSCAN模型对对象进行分类。因此,如果来自testdataset的对象在模型的集群内或附近,则其标记为集群,并且当对象没有这样的集群时,它标记为未知或其他东西(我认为“?”是标签要去)。我使用“Apply Model”操作符来执行此操作,但这并没有按预期工作。它基本上检查是否有一个与训练数据集中相同的ID,如果是,对象将被标记为与训练集中的对象相同的集群。基本上,我尝试创建一个二项分类器。
所以我的问题是,有没有可能的方法来创建一个过程,实现这个想法,但没有预测算子(树,k-NN,…)?
我的想法是用“循环集群”检查每个集群,然后尝试检查从测试集到集群中的对象的每个对象(如cluser_0有10个对象,测试集有10个对象->循环运行100次),并将它们与距离测量(欧几里德距离)进行比较,如果结果低于阈值,那么来自测试集的对象将被标记为与之比较的集群。输出应该是标记的testdata。
什么好主意吗?和感谢
最佳答案
-
lionelderkrikor 主持人,RapidMiner认证分析师,会员职位:1195年
独角兽
嗨@Tucka,
您的第一个解决方案确实是不可能的,因为,先验地,RapidMiner的DBscan算法分类
聚类中的所有数据:总之,没有“未标记数据”或“噪声”。
我在这里强调了RapidMiner的这种行为(与Python的DBscan算法相比)线程今年年初:看看最后两篇文章,你会看到并理解多亏了插图(小图片比长演讲好。:cathappy:..)两种算法在行为上的区别。
所以我可以提出一个基于Python脚本的缓和解决方案。(你可以在RapidMiner中实现和执行一些Python脚本…)
实际上,给定DBscan算法的参数(min points / epsilon),满足这些条件的数据被DBscan Python算法在生成的聚类中“分类”,其他数据被分类为“未标记”…
因此,为了执行任务,我们可以应用第一种方法(训练/应用DBscan),但使用Python的DBscan算法而不是RapidMiner的DBscan)。
对于这个任务,你能分享你的数据集和你用来训练这个模型的DBscan的参数(min points / epsilon)吗?
-我允许自己(再次)问我上面提到的问题:为什么RapidMiner的DBSCAN是集群所有数据?/为什么没有“未标记的”数据?
注:如果我问这最后两个问题,是因为"理解事物是如何运作的感觉很好。”(引用@earmijo在最近的一篇文章中…:smileyvery-happy:)
问候,
莱昂内尔
1
答案
嗨@lionelderkrikor
谢谢你的蟒蛇点子!这几乎完成了任务,比快速挖掘器DBSCAN要好得多。
正如您之前提到的,我已经看到rapidminer的DBSCAN将所有“未知”对象标记为密度不存在的群集。所以我有一些好看的星团,其中包括所有的物体,在我看来,是“未知的”,但也有很多物体是在密度基础上聚集的。
目前我无法分享数据,很抱歉。但我可以这样描述它们,它是一个系统温度数据的时间序列,这些数据还包括系统状态的一些致命误差。所以我的任务是找到错误,并尝试通过DM自动检测它们。我从文献中选择的DM方法是使用DBSCAN进行轮廓线检测。
感谢你,我现在可以在我的训练数据中检测大纲,但如果我试图验证模型python构建一个新模型,所以我做了一些研究,我的结论是DBSCAN算法无法从其他数据集中找到大纲。现在我已经实现了一个决策树来弥补这一点……这个解是有效的,虽然不像一般的分类器那么好但是,我可以把它写下来。
所以谢谢你!
“所以我的问题是,为什么RapidMiner的DBSCAN会对所有数据进行聚类,而不考虑epsilon / min点的设置?”
是的,这是我想知道的事情!
谢谢
嘿@lionelderkrikor
我的问题是,为什么RapidMiner的DBSCAN会对所有数据进行聚类,而不管epsilon / min点的设置如何?
答:https://docs.www.turtlecreekpls.com/latest/studio/operators/modeling/segmentation/dbscan.html
rapitminer DBSCAN所做的是将“噪声”聚类到“cluster_0”中,我比较了两种DBSCAN算法的结果,它们几乎是相同的。
你好,
不客气@Tucka.
很高兴你的工作进展顺利。
当然,感谢您对RapidMiner的DBscan算法的行为的回答。
注意:对于异常值检测,您在RapidMiner中有专门的操作员:
…在扩展中异常检测(从Marketplace安装):
良好的延续,
问候,
莱昂内尔