用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