亲和传播聚类的可扩展并行编程实现
Concurrent_A的Python项目详细描述
概述
一种可伸缩的并行亲和性编程实现 传播群集。
关联传播是一种基于消息传递的聚类算法 在数据点之间。
存储和更新“亲缘关系”、“责任”和 样本之间的“相似性”可能是记忆密集型的。我们解决这个问题 通过使用hdf5数据结构发出,允许关联 任意大数据集的传播群集,其中 在大多数机器上,实现都会返回一个memoryerror。
我们还通过将它们分开来显著地加快计算速度 跨子流程,从而充分利用 多核处理器并绕过 标准的python解释器cpython。
安装和要求
concurrent_ap需要python 2.7以及以下包和 标准python库中的几个模块:
- numpy>;=1.9
- psutil
- Pytables
- SCIKIT学习
- 设置工具
建议您检查是否安装了所需的依赖项,尽管下面的pip命令应自动为您执行此操作。您确实可以最方便地从官方python包索引(pypi)下载并发的ap,如下所示:
- 打开终端窗口;
- 输入命令pip install Concurrent_AP。
这里的代码已经在fedora、os x和ubuntu上测试过了,应该 在类unix操作系统系列的任何其他成员上都可以正常工作。
用法和命令行选项
查看与并发应用程序的每个函数关联的docstrings 模块以获取更多信息并了解不同任务 在子流程之间组织和共享。
用法:Concurrent_AP [options] file_name,其中file_name 表示要通过关联传播处理的数据的路径 群集被保留。数据必须包含在以制表符分隔的示例行中,每个列对应于特定功能。
- -c或--convergence:指定不带 表示聚合的群集数的更改(默认值 15);
- -d或--damping:关联的阻尼参数 传播(默认为0.5);
- -f或--file:指定文件名或文件句柄的选项 所涉及矩阵的层次数据格式 将存储关联传播群集(默认为 临时文件);
- ^ TT11} $或^ {TT12}$:消息传递的最大数目 迭代次数(默认为200次);
- -m或--multiprocessing:要使用的进程数;
- -p或--preference:关联的首选参数 传播(如果未指定,将确定为 样本间成对l2欧氏距离的分布);
- -s或--similarities:确定相似矩阵是否 已预先计算并存储在HDF5数据结构中,可在 通过命令行选项指定的位置-f或 --file(见上文);
- -v或--verbose:是否冗长。
并发ap的演示
以下几行说明了在 “IRIS数据集”来自UCI机器学习库。而 这里的样品数量太少,不利于现在 多任务实现和hdf5数据结构的使用 充分发挥作用,这个数据集的优点是 与scikit learn的版本进行快速比较 亲和力传播聚类。
- 在python解释器控制台中,输入以下几行 目的是创建一个包含iris数据集的文件 之后通过 同意者电子地图:
>>> import numpy as np >>> from sklearn import datasets >>> iris = datasets.load_iris() >>> data = iris.data >>> with open('./iris_data.txt', 'w') as f: np.savetxt(f, data, fmt = '%.4f', delimiter = '\t')
- 打开终端窗口。
- 键入Concurrent_AP --preference 5.47 --v iris_data.txt或 只需Concurrent_AP iris_data.txt。
后者将自动从 数据集。
当数据点之间的消息传递轮次完成时, 包含群集标签文件和群集中心文件的文件夹 以制表符分隔格式创建的索引都是在当前工作中创建的 目录。
参考
布伦丹·J·弗雷和德尔伯特·杜克。“通过传递消息进行群集 数据点之间”,科学2007年2月