快速且内存高效的dbscan集群,可能在公共数据集中的不同子样本上

DBSCAN_multiplex的Python项目详细描述


概述

dbscan(density-based)的快速内存高效实现 具有噪声的应用程序的空间聚类)。

它特别适用于多轮下采样和 来自联合数据集的集群:在初始开销o(n log(n))之后, 每个后续的聚类运行将具有O(n)时间复杂度。

如当前模块的docstring中嵌入的doctest所示, 在15000个样本和47个功能的数据集上,在华硕Zenbook笔记本电脑上 8 GiB内存和Intel Core M处理器, dbscan_多重处理50轮次采样和聚类 大约4分钟,而scikit learn实现了dbscan 在超过28分钟内执行相同的任务。

这样的测试可以在您的机器上非常方便地执行:简单地 在终端中输入python DBSCAN_multiplex将提示 开始比较上述两种方法的性能 dbscan的实现。

这7倍的性能提升证明对统计数据至关重要 学习应用程序,促使了该算法的设计。

安装和要求

dbscan_多路复用需要一台运行任何unix成员的计算机 操作系统系列,Python2.7以及以下软件包 以及标准python库中的几个模块:

  • numpy>;=1.9
  • Pytables
  • SCIKIT学习

您可以从正式的python包索引(pypi)安装dbscan_multiplex,如下所示:

  • 打开终端窗口;
  • 键入pip install DBSCAN_multiplex

上面列出的命令应自动安装或升级本节开头列出的依赖项中丢失或过期的依赖项。

用法和示例

查看与dbscan_multiplex的每个函数相关联的docstrings 模块获取更多信息;在python解释器控制台中,它们可以 通过调用内置帮助系统查看,例如, help(DBSCAN_multiplex.load)

以下几行显示了dbscan_多路复用如何用于 从一个共同的高斯分布中随机选取50个子样本 分布式数据集。这种情况出现在共识集群中,其中 人们可能希望获得并组合多个簇向量 标签。

>>> import numpy as np
>>> import DBSCAN_multiplex as DB

>>> data = np.random.randn(15000, 7)
>>> N_iterations = 50
>>> N_sub = 9 * data.shape[0] / 10
>>> subsamples_matrix = np.zeros((N_iterations, N_sub), dtype = int)
>>> for i in xrange(N_iterations):
        subsamples_matrix[i] = np.random.choice(data.shape[0], N_sub, replace = False)
>>> eps, labels_matrix = DB.DBSCAN(data, minPts = 3, subsamples_matrix = subsamples_matrix, verbose = True)

参考文献

  • Ester,M.,Kriegel,H.-P.,Sander,J.和Xu,X.(1996),“基于密度的 一种在有噪声的大型空间数据库中发现簇的算法。 第二届知识发现国际会议纪要 和数据挖掘(kdd-96)。aaai出版社。第226-231页。
  • Kriegel,H.-P.,Kroeger,P.,Sander,J.和Zimek,A.(2011)“基于密度 集群”。连线数据挖掘和知识发现1(3):231-240。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android将字符串拆分为数组   java如何读取底层HttpServerExchange对象中的响应数据?   在jenkins上安装gitplugin时出现java错误   java DecimalFormat格式decimal,用于保留可变数量的尾随零   java Jaxws、spring和SpringBeanAutowiringSupport   Gson中抽象类的java反序列化   监视Windows服务器中的UDP数据包丢失,Java   java从侦听器调用所有者类   java Scala和Robocode类循环错误   java映像未上载到数据库   java如何将XML文件直接写入zip存档?   java为什么需要EventSourcingHandler(在聚合对象中)?   接受特定对象或其子类型的java通用方法   java Spring安全过滤器映射在特定Url模式上禁用