dpcluster是一个用于组合(集群)向量的包。它根据底层的dirichlet进程混合模型自动选择最适合数据的集群数量。

dpcluster的Python项目详细描述


说明

dpcluster是一个用于组合(集群)向量的包。它自动选择最适合数据的集群数量。具体来说,它将数据建模为指数族中的dirichlet过程混合物。有关教程,请参见“Dirichlet Process” by Y.W. Teh (2010)。目前唯一实现的分布是具有正态逆wishart共轭先验的多元高斯分布,但可以扩展到其他分布。

实现了两种推理算法:

要在本地安装,请运行:

python setup.py install --user

用法

下面是一个简单的示例,演示如何对平面中的多个随机点进行聚类:

>>> from dpcluster import *
>>> n = 10
>>> data = np.random.normal(size=2*n).reshape(-1,2)
>>> vdp = VDP(GaussianNIW(2))
>>> vdp.batch_learn(vdp.distr.sufficient_stats(data))
>>> plt.scatter(data[:,0],data[:,1])
>>> vdp.plot_clusters(slc=np.array([0,1]))
>>> plt.show()

根据随机生成的数据,运行此命令可能会生成2-3个集群。当我们将数据点的数目从n = 10增加到n = 500时,dirichlet进程混合模型的自适应性质就变得明显了。在这种情况下,聚类算法可能只使用一个聚类来解释数据。

待办事项

  • 实现更多的聚类算法,例如基于gibbs抽样、期望传播、随机梯度下降。
  • 实现更多的集群分布。
  • 重新实现算法以利用多核或gpu计算。

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

推荐PyPI第三方库


热门话题
java如何在安卓中更改SeekBar颜色?(以编程方式)   java在本地测试SpringOpenShift应用程序   java为什么局部变量仍然显示警告,尽管方法中使用了值?   未解析java Spring启动验证消息   java MultiSelectListPreference是否获取检查值?   xml签名中的java引用验证   eclipse JWNL(Java WordNet库)和WordNet   java Firebase addValueEventListener是否异步工作?   单选按钮的java@FindBy注释   通过JAVA Web服务调用时,安卓 ClassNotFound异常?   java Try catch不起作用(总是执行catch代码)   为什么Eclipse在尝试导入现有java项目或创建新项目时关闭时没有任何错误消息?   java Genesys Composer应用程序与Eclipse RCP应用程序有何不同   java替换方法无法正常工作   使用JavaFX8构建java MOJO   Spark使用Java没有可用的实时SolrServer来处理此请求   Java Optaplanner在不同的机器上进行不同的计算   在类之间导入java变量   在或多个运营商SAP Java中   java Hibernate保存SQL异常