查看: 2515|回复: 0

层次聚类sklearn.cluster包AgglomerativeClustering

[复制链接]

665

主题

1234

帖子

6683

积分

xdtech

Rank: 5Rank: 5

积分
6683
发表于 2019-9-11 21:40:25 | 显示全部楼层 |阅读模式
Ward策略:让所有类簇中的方差最小化。

Maximum策略:也叫completed linkage(全连接策略),力求将类簇之间的距离最大值最小化。

Average linkage策略:力求将簇之间的距离的平均值最小化

single单次使用所有观测之间的最小距离两组中的一组。

AgglomerativeClustering中linkage参数为 [‘ward’, ‘complete’, ‘average’,‘single’]**

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import AgglomerativeClustering

#从磁盘读取城市经纬度数据
X = []
with open('../K_means/data.txt') as f:
    for v in f:
        X.append([float(v.split(',')[2]), float(v.split(',')[3])])
#转换成numpy array
X = np.array(X)
#类簇的数量
n_clusters = 5
#现在把数据和对应的分类数放入聚类函数中进行聚类,使用方差最小化的方法'ward'
cls = AgglomerativeClustering(linkage='ward', n_clusters=n_clusters).fit(X)
#X中每项所属分类的一个列表
cls.labels_    #  X对应index列表
#画图
markers = ['^', 'x', 'o', '*', '+']
for i in range(n_clusters):
    members = cls.labels_ == i
    plt.scatter(X[members, 0], X[members, 1], s=60, marker=markers[i], c='b', alpha=0.5)
plt.title('')
plt.show()


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表