基于密度的变密度聚类

hdbscan的Python项目详细描述


HDBScan

基于层次密度的应用空间聚类 有噪音。在不同的epsilon值上执行dbscan并集成 找到一个聚类的结果,它比epsilon更稳定。 这使得hdbscan能够找到密度不同的集群(与dbscan不同)。 对参数选择更加稳健。

实际上,这意味着hdbscan直接返回一个好的集群 只需很少或根本没有参数调整,而主要参数, 最小群集大小,直观且易于选择。

HDBScan是探索性数据分析的理想选择;它是一种快速和健壮的 可以信任的算法返回有意义的集群(如果有 有)。

根据论文:

< Buff行情>

McInnes L,Healy J. 基于加速分层密度的聚类 在:2017年IEEE国际数据挖掘研讨会(ICDMW),IEEE,第33-42页。 2017年 [pdf]

R.Campello、D.Moulavi和J.Sander, 基于密度的聚类 层次密度估计 in:知识发现的进展数据挖掘,斯普林格,160-172页。 2013

阅读文档(包括教程)可在http://hdbscan.readthedocs.io/en/latest/" rel="nofollow">http://hdbscan.readthedocs.io/en/latest/上找到。

笔记本电脑将HDBScan与其他群集算法进行比较scan/blob/master/notebooks/how%20hdbscan%20works.ipynb" rel="nofollow">hdbscan如何工作和 比较执行与其他python集群实现的ance 可用。

如何使用HDBScan

hdbscan包继承自sklearn类,因此可以方便地插入 与其他具有相同调用api的sklearn cluster相邻。同样地 支持多种格式的输入:数组(或pandas数据框,或 稀疏矩阵)形状 (num-samples x num-features) ;数组(或稀疏矩阵) 给出样本之间的距离矩阵。

importhdbscanfromsklearn.datasetsimportmake_blobsdata,_=make_blobs(1000)clusterer=hdbscan.HDBSCAN(min_cluster_size=10)cluster_labels=clusterer.fit_predict(data)

性能

为了使hdbscan的实现速度与 可能的。它是一个HRFF="http://nbVistor.juyter .org/Github/ScKIT"学习CuriB/HDBSnc/Bulb/Muth/BoothBoo/Python %20VS%20Java.IPyb"Rele="nfoLoLo>">比爪哇中的参考实现更快的数量级, 并且目前比C和C++中高度优化的单链接实现更快。 在本笔记本中可以看到0.7版的性能 。 特别是,低维数据的性能优于sklearn的dbscan, 并通过支持joblib缓存,使用不同参数重新集群 几乎是免费的。

附加功能

hdbscan包配备了可视化工具来帮助您 了解聚类结果。在拟合数据之后,聚类器 对象具有以下属性:

  • 浓缩的群集层次结构
  • 健壮的单连杆机群层次结构
  • 可达距离最小生成树

所有这些都配备了绘图和转换的方法 给熊猫或网络作进一步分析。看上面的笔记本 如何使用hdbscan 以获取示例和更多详细信息。

cluster对象还有一个提供集群成员身份的属性 强度,导致可选的软聚类(无需进一步计算 费用)。最后,每个集群还收到一个持久性得分 星系团在距离尺度范围内的稳定性 在数据中。这提供了集群相对强度的度量。

异常值检测

hdbscan集群对象也支持glosh离群点检测算法。 将聚类器拟合到数据后,可以通过 异常值得分属性。结果是一个分数向量,一个用于 每个合适的数据点。分数越高,表示的对象越离群。 通过上分位数选择离群值通常是一种尝试OD进近。

< DL>
基于论文:
R.J.G.B.坎佩罗、D.穆拉维、A.齐梅克和J.桑德 数据聚类、可视化和离群点检测的分层密度估计 , ACM反式《从数据中发现知识》,第10卷,第1期(2015年7月),第1-51页。

坚固的单连杆

hdbscan包还支持 健壮的单连杆 chaudhuri和dasgupta的聚类算法。和HDBScan一样 实现这是算法的高性能版本 优于scipy的标准单链接实现。这个 稳健的单连杆结构可用作 强大的单连杆组合器,同样具有绘图功能 或者导出层次结构,并在给定位置提取平面簇 切割电平和伽马值。

示例用法:

importhdbscanfromsklearn.datasetsimportmake_blobsdata,_=make_blobs(1000)clusterer=hdbscan.RobustSingleLinkage(cut=0.125,k=7)cluster_labels=clusterer.fit_predict(data)hierarchy=clusterer.cluster_hierarchy_alt_labels=hierarchy.get_clusters(0.100,5)hierarchy.plot()
< DL>
基于论文:
K.Chaudhuri和S.Dasgupta。 "聚类树的收敛速度。" 神经信息处理系统进展,2010年。

安装

最简单的安装,如果你有蟒蛇(感谢康达锻造这是可怕的!)

conda install -c conda-forge hdbscan

pypi安装,假设您有最新的pip:

pip install hdbscan

由于 ryan helinski<; rlhelinski @ gmail com >;

如果pip在提取依赖项时遇到困难,那么我们建议首先升级 Pip到至少版本10,然后重试:

pip install --upgrade pip
pip install hdbscan

否则,使用anaconda手动安装依赖项,然后从pip中拉出hdbscan:

conda install cython
conda install numpy scipy
conda install scikit-learn
pip install hdbscan

直接从github手动安装最新代码:

pip install --upgrade git+https://github.com/scikit-learn-contrib/hdbscan.git#egg=hdbscan

或者下载软件包、安装要求并手动运行安装程序:

wget https://github.com/scikit-learn-contrib/hdbscan/archive/master.zip
unzip master.zip
rm master.zip
cd hdbscan-master

pip install -r requirements.txt

python setup.py install

运行测试

安装后,可以使用以下命令运行包测试:

nosetests -s hdbscan

或者,如果安装了nose ,但nosetests不在您的路径变量中:

importhdbscanfromsklearn.datasetsimportmake_blobsdata,_=make_blobs(1000)clusterer=hdbscan.HDBSCAN(min_cluster_size=10)cluster_labels=clusterer.fit_predict(data)
0

如果一个或多个测试失败,请在https://github.com/scikit-learn-contrib/hdbscan/issues/new" rel="nofollow">https://github.com/scikit learn-contrib/hdbscan/issues/new上报告错误

python版本

hdbscan库同时支持python 2和python 3。但是,如果您可以使用python 3,我们建议您选择它。

帮助和支持

有关简单问题,请参阅文档中的faq。 如果您的问题在那里没有得到适当的解决,请检查github上的 问题 。最后,如果没有可用的解决方案,请随时打开问题;作者将尝试以合理及时的方式作出回应。

贡献

我们欢迎任何形式的贡献!帮助编写文档,特别是扩展教程, 总是受欢迎的。若要做出贡献,请执行更改并提交请求。我们将尽最大努力解决 然后将代码合并到主分支中。

引用

如果您在科学出版物中使用过此代码库,并希望引用它,请使用《开放源代码软件杂志》的 文章

< Buff行情> L.McInnes,J.Healy,S.AST公司els, hdbscan:基于层次密度的聚类 在:开放源码软件期刊,开放期刊,第2卷,第11期。 2017年
importhdbscanfromsklearn.datasetsimportmake_blobsdata,_=make_blobs(1000)clusterer=hdbscan.HDBSCAN(min_cluster_size=10)cluster_labels=clusterer.fit_predict(data)
1

要参考此库中开发的高性能算法,请引用我们在ICDMW 2017会议记录中的论文。

< Buff行情> McInnes L,Healy J. 基于加速分层密度的聚类 在:2017年IEEE国际数据挖掘研讨会(ICDMW),IEEE,第33-42页。 2017年
importhdbscanfromsklearn.datasetsimportmake_blobsdata,_=make_blobs(1000)clusterer=hdbscan.HDBSCAN(min_cluster_size=10)cluster_labels=clusterer.fit_predict(data)
2

许可

hdbscan包是3条bsd许可的。享受。

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

推荐PyPI第三方库


热门话题
有没有一种方法可以将不同的java web应用程序组合到一个web应用程序(war)中而不相互影响?   java一次屏蔽两位   java如何在多个类上初始化元素?   java在后台服务中处理通知或使用GCM(或其他推送通知服务)   java从const方法调用JNI函数   javascript如何使用函数/方法返回?   Java优化:声明类变量与使用临时变量   java字符算术基数8 vs基数10   Java流收集要存储的对象列表   swing我正在用Java中的keyListener制作一个精灵移动器   在Gradle构建脚本中使用Scala(或java)方法   java Android Mediaplayer下一步按钮不起作用   Java Sound API在播放音频文件后将其锁定   java将变量从外部类传递到内部类的最佳方法   使用play framework的博客web应用程序出现java逻辑错误   java我们可以在Spring批处理中处理大型zip文件吗?   java如何检查JTable的选定行的特定列中的值是否已经在JList中?