【问题标题】:DBSCAN algorithms in rapidminer and scikit-learnrapidminer 和 scikit-learn 中的 DBSCAN 算法
【发布时间】:2014-09-11 10:09:36
【问题描述】:

我正在尝试寻找一种聚类算法来使用 python 对标称数据进行聚类。为此,我尝试了使用 RapidMiner 的 DBSCAN 算法,它适用于标称数据。但是当我使用 scikit-learn 提供的 DBSCAN 算法尝试相同的数据集时,它给出的错误是函数无法将字符串转换为浮点数。

rapidminer 和 scikit-learn 中的 DBSCAN 是否不同,我该如何解决这个问题? 另外,如果您告诉我另一种适用于名义数据的聚类算法会很棒吗?

【问题讨论】:

  • 在使用 scikit learn 时,您需要将数据编码为一些数字数据类型,这取决于您对字符串值的解释。是值标签,您是否需要从字符串中提取特征,例如长度,tf-idf 等。一般看LabelEncoderpreprocessing

标签: cluster-analysis data-mining scikit-learn rapidminer dbscan


【解决方案1】:

SciPy 默认为欧几里得距离 (metric='euclidean'),它没有为名义数据定义。

您需要指定距离测量值!

【讨论】:

  • 我试过了,但没有一个接受字符串数组(也许我错过了其中一个我不知道)。但我也从docs.scipy.org/doc/scipy/reference/spatial.distance.html 检查了它,因为其中一些接受布尔值。那么我是否必须将我的标称值转换为二进制文件?并使用其中一种二进制距离指标?
  • 实现自己的距离函数可能是个好主意,专为您的用例而设计。还要先评估距离。您需要了解您的距离才能选择 epsilon 参数;如果距离不减,聚类算法也必然失败!
【解决方案2】:

RapidMiner 实现了各种距离测量,包括标称距离。这由 DBSCAN 和其他算法使用。

如果属性的值相同,则两个示例之间的距离为零,否则为 1。换句话说,“Raspberry”与“Apple”和“Computer”的距离为 1。另外“Apple”与“Raspberry”、“Computer”等是一回事。

【讨论】:

  • 感谢您的信息。这正是我在 python 中寻找的东西。
猜你喜欢
  • 2016-06-25
  • 2016-08-11
  • 2016-01-01
  • 2013-04-29
  • 2015-03-05
  • 2013-07-01
  • 2019-04-15
  • 1970-01-01
  • 2013-04-12
相关资源
最近更新 更多