层次聚类sklearn.cluster包AgglomerativeClustering

**

  1. Ward策略:让所有类簇中的方差最小化。

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

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

  4. 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()

层次聚类sklearn.cluster包AgglomerativeClustering_第1张图片
层次聚类sklearn.cluster包AgglomerativeClustering_第2张图片
层次聚类sklearn.cluster包AgglomerativeClustering_第3张图片
层次聚类sklearn.cluster包AgglomerativeClustering_第4张图片
5. AgglomerativeClustering包例子

Examples
    --------
    >>> from sklearn.cluster import AgglomerativeClustering
    >>> import numpy as np
    >>> X = np.array([[1, 2], [1, 4], [1, 0],
    ...               [4, 2], [4, 4], [4, 0]])
    >>> clustering = AgglomerativeClustering().fit(X)
    >>> clustering # doctest: +NORMALIZE_WHITESPACE
    AgglomerativeClustering(affinity='euclidean', compute_full_tree='auto',
                connectivity=None, linkage='ward', memory=None, n_clusters=2,
                pooling_func='deprecated')
    >>> clustering.labels_
    array([1, 1, 1, 0, 0, 0])

你可能感兴趣的:(层次聚类sklearn.cluster包AgglomerativeClustering)