集群Python源代码

时间:2017-05-26 23:49:22

标签: python

我想知道是否有一个(最好是开源的)库,用于根据Python源代码的相似性聚类Python源代码 - 或者代码克隆检测器。

它应该基于已发表论文的算法(如AST指纹识别),并应清楚地描述它。

我补充说这是用于聚类“Python源代码”,而不是聚合任何数据。

1 个答案:

答案 0 :(得分:1)

将数据聚合在一起有多种方法。我在这里举两个例子。

k-mean群集

您可以使用scikit-learn使用KMeans模型将数据群集到群组中。基本上每个数据点都将分配到一个组中。

from sklearn.cluster import KMeans

X = np.array([[1, 2], [2, 3], [2, 3], [3, 5], [4, 2], [1, 1.5]])
kmean_model = KMeans(n_clusters=5, random_state=0)
kmean_model.fit_predict(X)

# return array([4, 2, 2, 3, 0, 1], dtype=int32)

k-mean聚类算法现在可以在大多数书籍中找到,所以你可以参考它。

分层聚类

对于分层聚类,您必须首先找到距离矩阵,在这种情况下将是6 x 6,因为我们在X中有6个数据点。我们得到的结果将是分区号,因此您可以根据输出分区对数据点进行排名。

import numpy as np
from scipy.cluster.hierarchy import fcluster, linkage
from scipy.spatial.distance import cdist

X = np.array([[1, 2], [2, 3], [2, 3], [3, 5], [4, 2], [1, 1.5]])
D = cdist(X, X) # euclidean distance matrix (you can custom distance here as you like)
linkage = linkage(D)
partition = fcluster(linkage, t=0.01, criterion='distance')

# return array([2, 1, 1, 5, 4, 3], dtype=int32)

参见相关论文here