gpt4 book ai didi

python - 聚类Python源代码

转载 作者:太空宇宙 更新时间:2023-11-04 05:06:47 25 4
gpt4 key购买 nike

我想知道是否有一个(最好是开源的)库可以根据它们的相似性对 Python 源代码进行聚类——或者,一个代码克隆检测器。

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

我补充说这是为了聚类“Python 源代码”,而不是聚类一般的任何数据。

最佳答案

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

k 均值聚类

您可以使用 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 .

关于python - 聚类Python源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44211540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com