基于密度的变密度聚类
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>坚固的单连杆
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>
安装
最简单的安装,如果你有蟒蛇(感谢康达锻造这是可怕的!)
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许可的。享受。