哪些软件包可以实现半监督(受约束)聚类



我想在半监督(受约束)聚类上运行一些实验,尤其是用作为实例级别成对约束的背景知识(必须链接或不能链接约束)提供的背景知识。我想知道是否有任何良好的开源软件包可以实现半监督聚类?我试图看一下Pybrain,Mlpy,Scikit和Orange,但找不到任何约束的聚类算法。特别是,我对受约束的K-均值或受约束密度的聚类算法感兴趣(例如C-DBSCAN)。Matlab,Python,Java或C 的软件包将是首选,但不必限于这些语言。

python软件包Scikit-learn现在具有 ward层次群集群的算法(自0.15)和> crocgomerate支持连接约束。

此外,我确实有一个现实世界应用,即从单元位置识别轨道,每个轨道只能从每个时间点中包含一个位置。

r软件包结论实现了许多算法:

此软件包中有4个主要功能:ckmeans(),lcvqe(),mpckm()和ccls()。他们采用了一个未标记的数据集,并且两个必须链接的列表,并且不能用作输入的链接约束,并产生聚类作为输出。

python中还有 cop-kmeans 的实现。

也许有点晚,但请查看以下内容。

  1. weka(在Java中)的扩展名实现PKM,MKM和PKMKM

    http://www.cs.ucdavis.edu/~davidson/constration-clustering/

  2. 使用EM和MATLAB中的约束

    中的高斯混合模型

    http://www.scharp.org/thertz/code.html

我希望这会有所帮助。

全面披露。我是K-Means受限的作者。

这是K-均值聚类的Python实现,您可以在其中指定最小和最大群集大小。它使用与Scikit-Learn相同的API,并且非常易于使用。它也基于快速的C 软件包,因此具有良好的性能。

您可以将其安装:

pip install k-means-constrained

示例使用:

>>> from k_means_constrained import KMeansConstrained
>>> import numpy as np
>>> X = np.array([[1, 2], [1, 4], [1, 0],
>>>                [4, 2], [4, 4], [4, 0]])
>>> clf = KMeansConstrained(
>>>     n_clusters=2,
>>>     size_min=2,
>>>     size_max=5,
>>>     random_state=0
>>> )
>>> clf.fit(X)
array([0, 0, 0, 1, 1, 1], dtype=int32)
>>> clf.cluster_centers_
array([[ 1.,  2.],
       [ 4.,  2.]])
>>> clf.predict([[0, 0], [4, 4]])
array([0, 1], dtype=int32)

github半度审查的用法类似于sklearn api。

pip install semisupervised

步骤1.未标记的样品应标记为-1。

step2。model.fit(x,y)

步骤3。Model.predict(x_test)

示例:

from semisupervised.TSVM import S3VM
model = S3VM()
model.fit(np.vstack((label_X_train, unlabel_X_train)), np.append(label_y_train, unlabel_y))
# predict
predict = model.predict(X_test)
acc = metrics.accuracy_score(y_test, predict)
# metric
print("accuracy", acc)

查看此Python软件包active-semi-supervised-clustering

github https://github.com/datamole-ai/active-semi-supervised-clustering

最新更新