用sklearn.cluster對列表數據聚類


一、按聚類數進行聚類

def list_cluster(data, n_cluster):
    new_data = [[i, 1] for i in data]
    new_data = np.array(new_data)
    cluster_rst = AgglomerativeClustering(n_clusters=n_cluster, affinity='euclidean', linkage='ward').fit_predict(new_data)

    return_data = []
    for i in range(n_cluster):
        subData = new_data[cluster_rst == i]
        return_data.append(list(subData[:, 0]))

    return return_data

print(list_cluster([1,2,3,53,1,23], 2))

輸出:

[[1, 2, 3, 1, 23], [53]]

 

print(list_cluster([1,2,3,53,1,23], 3))

輸出:

[[1, 2, 3, 1], [53], [23]]

 

二、按差值聚類:

def list_cluster_gap(data, maxgap):
    data.sort()
    groups = [[data[0]]]
    for x in data[1:]:
        if abs(x - groups[-1][-1]) <= maxgap:
            groups[-1].append(x)
        else:
            groups.append([x])
    return groups

print(list_cluster_gap([1,2,3,53,1,23], 20))

輸出:

[[1, 1, 2, 3, 23], [53]]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM