聚类

  • 1. 聚类的概念
    • 1.1 层次聚类
    • 1.2 k 均值聚类
  • 2. 聚类中的基本概念
    • 2.1 相似度或距离
      • 2.1.1 闵可夫斯基距离
      • 2.1.2 马哈拉诺比斯距离
      • 2.1.3 相关系数
      • 2.1.4 夹角余弦
    • 2.2 类或簇
    • 2.3 类与类之间的距离
  • 3. 聚合聚类
    • 聚合聚类程序
  • 4. k 均值聚类
    • 4.1 模型
    • 4.2 策略
    • 4.3 算法
    • 4.4 算法特性
      • 4.4.1 总体特点
      • 4.4.1 收敛性
      • 4.4.1 初始类的选择
      • 4.4.1 类别数 k 的选择

1. 聚类的概念

▶ \blacktriangleright ▶ 聚类是针对给定的样本,依据它们特征的相似度或距离,将其归并到若干个“类”或“簇”的数据分析问题。 一个类是样本的一个子集。直观上,相似的样本聚集在相同的类,不相似的样本分散在不同的类。这里,样本之间的相似度或距离起着重要作用

▶ \blacktriangleright ▶ 聚类的目的是通过得到的类或簇来发现数据的特点或对数据进行处理,聚类属于无监督学习,因为只是根据样本的相似度或距离将其进行归类,而类或簇事先并不知道。

【聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个“簇”(cluster)】

聚类算法 1
层次聚类 1
k 均值聚类 1
聚合方法 1
分裂方法 1

1.1 层次聚类

层次聚类假设类别之间存在层次结构,将样本聚到层次化的类中。层次聚类有聚合(agglomerative)和分裂(divisive)方法两种,层次聚类属于硬聚类。

▶ \blacktriangleright ▶ 聚合法(自下而上,bottom-up)开始将每个样本各自分到一个类;之后将相距最近的两类合并,建立一个新的类,重复此操作直到满足停止条件;得到层次化的类别。

▶ \blacktriangleright ▶ 分裂法(自上而下,top-down)开始将所有样本分到一个类;之后将已有类中相距最远的样本分到两个新的类,重复此操作直到满足停止条件;得到层次化的类别。

1.2 k 均值聚类

k k k 均值聚类是基于中心的聚类方法,通过迭代,将样本分到 k k k 个类中,使得每个样本与其所属类的中心或均值最近;得到 k k k 个“平坦的”、非层次化的类别,构成对空间的划分。

2. 聚类中的基本概念

2.1 相似度或距离

聚类的对象是观测数据,或样本集合。假设有 n n n 个样本,每个样本由 m m m 个属性的特征向量组成。样本集合可以用矩阵 X X X 表示
X = [ x i j ] m × n = [ x 11 x 12 ⋯ x 1 n x 21 x 22 ⋯ x 2 n ⋮ ⋮ ⋮ x m 1 x m 2 ⋯ x m n ] X=[x_{ij}]_{m\times n}=\left [ \begin{matrix} x_{11} & x_{12} & \cdots & x_{1n}\\ x_{21} & x_{22} & \cdots & x_{2n}\\ \vdots & \vdots & & \vdots\\ x_{m1} & x_{m2} & \cdots & x_{mn}\\ \end{matrix} \right ] X=[xij​]m×n​=⎣⎢⎢⎢⎡​x11​x21​⋮xm1​​x12​x22​⋮xm2​​⋯⋯⋯​x1n​x2n​⋮xmn​​⎦⎥⎥⎥⎤​
矩阵的第 j j j 列表示第 j j j 个样本, j = 1 , 2 , ⋯   , n j=1,2,\cdots,n j=1,2,⋯,n;第 i i i 行表示第 i i i 个属性, i = 1 , 2 , ⋯   , m i=1,2,\cdots,m i=1,2,⋯,m;矩阵元素 x i j x_{ij} xij​ 表示第 j j j 个样本的第 i i i 个属性值, i = 1 , 2 , ⋯   , m ; j = 1 , 2 , ⋯   , n i=1,2,\cdots,m;j=1,2,\cdots,n i=1,2,⋯,m;j=1,2,⋯,n.

聚类的核心概念是相似度(similarity)或距离(distance),有多种相似度或距离的定义。因为相似度直接影响聚类的结果,所以其选择是聚类的根本问题

在聚类中,可以将样本集合看作是向量空间中点的集合,以该空间的距离表示样本之间的相似度。常用的距离有闵可夫斯基距离,特别是欧氏距离。

2.1.1 闵可夫斯基距离

闵可夫斯基距离越大相似度越小,距离越小相似度越大。给定样本集合 X X X, x i , x j ∈ X , X ∈ R m , x i = ( x 1 i , x 2 i , ⋯   , x m i ) T , x j = ( x 1 j , x 2 j , ⋯   , x m j ) T x_{i},x_{j}\in X,X\in \mathbb{R}^{m},x_{i}=(x_{1i},x_{2i},\cdots,x_{mi})^{T},x_{j}=(x_{1j},x_{2j},\cdots,x_{mj})^{T} xi​,xj​∈X,X∈Rm,xi​=(x1i​,x2i​,⋯,xmi​)T,xj​=(x1j​,x2j​,⋯,xmj​)T,样本 x i x_{i} xi​ 和样本 x j x_{j} xj​ 的闵可夫斯基距离为:
d i j = ( ∑ k = 1 m ∣ x k i − x k j ∣ p ) 1 p d_{ij}=(\sum\limits_{k=1}^{m}|x_{ki}-x_{kj}|^{p})^{\frac{1}{p}} dij​=(k=1∑m​∣xki​−xkj​∣p)p1​
有 p ≥ 1 p\geq1 p≥1。当 p = 2 p=2 p=2 时称为欧氏距离(Euclidean distance),即:
d i j = ( ∑ k = 1 m ∣ x k i − x k j ∣ 2 ) 1 2 d_{ij}=(\sum\limits_{k=1}^{m}|x_{ki}-x_{kj}|^{2})^{\frac{1}{2}} dij​=(k=1∑m​∣xki​−xkj​∣2)21​
当 p = 1 p=1 p=1 时称为曼哈顿距离(Manhattan distance),即
d i j = ∑ k = 1 m ∣ x k i − x k j ∣ d_{ij}=\sum\limits_{k=1}^{m}|x_{ki}-x_{kj}| dij​=k=1∑m​∣xki​−xkj​∣
当 p = ∞ p=\infty p=∞ 时称为切比雪夫距离(Chebyshev distance),取各个坐标数值差的绝对值的最大值,即
d i j = max ⁡ k ∣ x k i − x k j ∣ d_{ij}=\max_{k}|x_{ki}-x_{kj}| dij​=kmax​∣xki​−xkj​∣

2.1.2 马哈拉诺比斯距离

马哈拉诺比斯距离(Mahalanobis dustance),简称马氏距离,也是另一种常用的相似度,考虑各个分量(特征)之间的相关性并与各个分量的尺度无关。马哈拉诺比斯距离越大相似度越小,距离越小相似度越大。

给定一个样本集合 X X X, X = ( x i j ) m × n X=(x_{ij})_{m\times n} X=(xij​)m×n​,其协方差矩阵记作 S S S,样本 x i x_{i} xi​ 与样本 x j x_{j} xj​ 之间的马哈拉诺比斯距离为:
d i j = [ ( x i − x j ) T S − 1 ( x i − x j ) ] 1 2 d_{ij}=[(x_{i}-x_{j})^{T}S^{-1}(x_{i}-x_{j})]^{\frac{1}{2}} dij​=[(xi​−xj​)TS−1(xi​−xj​)]21​
其中,
x i = ( x 1 i , x 2 i , ⋯   , x m i ) T , x j = ( x 1 j , x 2 j , ⋯   , x m j ) T x_{i}=(x_{1i},x_{2i},\cdots,x_{mi})^{T},x_{j}=(x_{1j},x_{2j},\cdots,x_{mj})^{T} xi​=(x1i​,x2i​,⋯,xmi​)T,xj​=(x1j​,x2j​,⋯,xmj​)T
当 S S S 为单位矩阵时,即样本数据的各个分量互相独立且各个分量的方差为 1 1 1 时,马氏距离即是欧氏距离。

2.1.3 相关系数

样本之间的相似度也可以用相关系数(correlation coeefficient)来表示。相关系数的绝对值越接近于1,表示样本越相似:越接近于0,表示样本越不相似。
样本 x i x_{i} xi​ 与样本 x j x_{j} xj​ 之间的相关系数定义为:
r i j = ∑ k = 1 m ( x k i − x ‾ i ) ( x k j − x ‾ j ) [ ∑ k = 1 m ( x k i − x ‾ i ) 2 ∑ k = 1 m ( x k j − x ‾ j ) 2 ] 1 2 r_{ij}=\frac{\sum\limits_{k=1}^{m}(x_{ki}-\overline{x}_{i})(x_{kj}-\overline{x}_{j})}{[\sum\limits_{k=1}^{m}(x_{ki}-\overline{x}_{i})^{2}\sum\limits_{k=1}^{m}(x_{kj}-\overline{x}_{j})^{2}]^{\frac{1}{2}}} rij​=[k=1∑m​(xki​−xi​)2k=1∑m​(xkj​−xj​)2]21​k=1∑m​(xki​−xi​)(xkj​−xj​)​
x ‾ i = 1 m ∑ k = 1 m x k i , x ‾ j = 1 m ∑ k = 1 m x k j \overline{x}_{i}=\frac{1}{m}\sum\limits_{k=1}^{m}x_{ki},\overline{x}_{j}=\frac{1}{m}\sum\limits_{k=1}^{m}x_{kj} xi​=m1​k=1∑m​xki​,xj​=m1​k=1∑m​xkj​

2.1.4 夹角余弦

样本之间的相似度也可以夹角余弦(cosine)来表示。相关系数的绝对值越接近于1,表示样本越相似:越接近于0,表示样本越不相似。
样本 x i x_{i} xi​ 与样本 x j x_{j} xj​ 之间的夹角余弦定义为:
s i j = ∑ k = 1 m x k i x k j [ ∑ k = 1 m x k i 2 ∑ k = 1 m x k j 2 ] 1 2 s_{ij}=\frac{\sum\limits_{k=1}^{m}x_{ki}x_{kj}}{[\sum\limits_{k=1}^{m}x_{ki}^{2}\sum\limits_{k=1}^{m}x_{kj}^{2}]^{\frac{1}{2}}} sij​=[k=1∑m​xki2​k=1∑m​xkj2​]21​k=1∑m​xki​xkj​​

由上述几种不同的距离定义可以看出,不同相似度度量得到的结果并不一致。用距离度量相似度时,距离越小样本越相似;用相关系数时,相关系数越大样本越相似。

从图上可以看出,从距离的角度看, A A A 和 B B B 比 A A A 和 C C C 更相似;但从相关系数的角度看, A A A 和 C C C 比 A A A 和 B B B 更相似。足以看出,聚类时合适的距离或者相似度的选择非常重要。

2.2 类或簇

通过聚类得到的类或簇,本质是样本的子集。
▶ \blacktriangleright ▶ 如果一个聚类方法假定一个样本只能属于一个类,或类的交集为空集,那么该方法称为硬聚类(hard clustering)方法;
▶ \blacktriangleright ▶ 否则,如果一个样本可以属于多个类,或类的交集不为空集,那么该方法称为软聚类(soft clustering)方法。

用 G G G 表示类或簇(cluster),用 x i , x j x_{i},x_{j} xi​,xj​ 表示类中的样本,用 n G n_{G} nG​ 表示 G G G 中样本的个数,用 d i j d_{ij} dij​ 表示样本 x i x_{i} xi​ 与样本 x j x_{j} xj​ 之间的距离。类或簇有多种定义。

★ \bigstar ★ 定义 1 设 T T T 为给定的正数,若集合 G G G 中任意两个样本 x i , x j x_{i},x_{j} xi​,xj​,有
d i j ≤ T d_{ij}\leq T dij​≤T
则称 G G G 为一个类或簇

★ \bigstar ★ 定义 2 设 T T T 为给定的正数,若对集合 G G G 中任意两个样本 x i x_{i} xi​,一定存在 G G G 中的另一个样本 x j x_{j} xj​,使得
d i j ≤ T d_{ij}\leq T dij​≤T
则称 G G G 为一个类或簇

★ \bigstar ★ 定义 3 设 T T T 为给定的正数,若对集合 G G G 中任意两个样本 x i x_{i} xi​ G G G 中的另一个样本 x j x_{j} xj​,满足
1 n G − 1 ∑ x j ∈ G d i j ≤ T \frac{1}{n_{G}-1}\sum\limits_{x_{j}\in G}d_{ij}\leq T nG​−11​xj​∈G∑​dij​≤T
其中 n G n_{G} nG​ 为 G G G 中样本的个数,则称 G G G 为一个类或簇

★ \bigstar ★ 定义 4 设 T T T 和 T T T 为给定的两个正数,若集合 G G G 中任意两个样本 x i , x j x_{i},x_{j} xi​,xj​ 的距离 d i j d_{ij} dij​ 满足
1 n G ( n G − 1 ) ∑ x i ∈ G ∑ x j ∈ G d i j ≤ T d i j ≤ T \frac{1}{n_{G}(n_{G}-1)}\sum\limits_{x_{i}\in G}\sum\limits_{x_{j}\in G}d_{ij}\leq T\\d_{ij}\leq T nG​(nG​−1)1​xi​∈G∑​xj​∈G∑​dij​≤Tdij​≤T
则称 G G G 为一个类或簇

类的特征可以通过不同角度来刻画,常用的特征有下面三种:

1)类的均值 x ‾ G \overline{x}_{G} xG​ ,又称为类的中心
x ‾ G = 1 n G ∑ i = 1 n G x i \overline{x}_{G}=\frac{1}{n_{G}}\sum\limits_{i=1}^{n_{G}}x_{i} xG​=nG​1​i=1∑nG​​xi​
式中 n G n_{G} nG​ 是类 G G G 的样本个数
2)类的直径(diameter) D G D_{G} DG​
类的直径 D G D_{G} DG​ 是类中任意两个样本之间的最大距离,即
D G = max ⁡ x i , x j ∈ G d i j D_{G}=\max_{x_{i},x_{j}\in G}d_{ij} DG​=xi​,xj​∈Gmax​dij​
3)类的样本散布矩阵(scatter matrix) A G A_{G} AG​ 与样本协方差矩阵(covariance matrix) S G S_{G} SG​,
类的样本散布矩阵 A G A_{G} AG​ 为
A G = ∑ i = 1 n G ( x i − x ‾ G ) ( x i − x ‾ G ) T A_{G}=\sum\limits_{i=1}^{n_{G}}(x_{i}-\overline{x}_{G})(x_{i}-\overline{x}_{G})^{T} AG​=i=1∑nG​​(xi​−xG​)(xi​−xG​)T
样本协方差矩阵 S G S_{G} SG​ 为
S G = 1 m − 1 A G = 1 m ∑ i = 1 n G ( x i − x ‾ G ) ( x i − x ‾ G ) T S_{G}=\frac{1}{m-1}A_{G}\\=\frac{1}{m}\sum\limits_{i=1}^{n_{G}}(x_{i}-\overline{x}_{G})(x_{i}-\overline{x}_{G})^{T} SG​=m−11​AG​=m1​i=1∑nG​​(xi​−xG​)(xi​−xG​)T
其中 m m m 为样本的维数(样本属性的个数)

2.3 类与类之间的距离

类 G p G_{p} Gp​ 与类 G q G_{q} Gq​ 之间的距离 D ( p , q ) D(p,q) D(p,q),也称为连接(linkage)。
设类 G p G_{p} Gp​ 包含 n p n_{p} np​ 个样本, G q G_{q} Gq​ 包含 n q n_{q} nq​ 个样本,分别用 x ‾ p \overline{x}_{p} xp​ 和 x ‾ q \overline{x}_{q} xq​ 表示 G p G_{p} Gp​ 和 G q G_{q} Gq​ 的均值,即类的中心。
1)最短距离或单连接(single linkage)
定义类 G p G_{p} Gp​ 的样本与类 G q G_{q} Gq​ 的样本之间的最短距离为两类之间的距离:
D p q = m i n { d i j ∣ x i ∈ G p , x j ∈ G q } D_{pq}=min\{d_{ij}|x_{i}\in G_{p},x_{j}\in G_{q}\} Dpq​=min{dij​∣xi​∈Gp​,xj​∈Gq​}
2)最长距离或完全连接(complete linkage)
定义类 G p G_{p} Gp​ 的样本与类 G q G_{q} Gq​ 的样本之间的最长距离为两类之间的距离:
D p q = m a x { d i j ∣ x i ∈ G p , x j ∈ G q } D_{pq}=max\{d_{ij}|x_{i}\in G_{p},x_{j}\in G_{q}\} Dpq​=max{dij​∣xi​∈Gp​,xj​∈Gq​}
3)中心距离
定义类 G p G_{p} Gp​ 与类 G q G_{q} Gq​ 的中心 x ‾ p \overline{x}_{p} xp​ 与 x ‾ q \overline{x}_{q} xq​ 之间的距离为两类之间的距离:
D p q = d x ‾ p x ‾ q D_{pq}=d_{\overline{x}_{p}\overline{x}_{q}} Dpq​=dxp​xq​​
4)平均距离
定义类 G p G_{p} Gp​ 与类 G q G_{q} Gq​ 的任意两个样本之间距离的平均值为两类之间的距离:
D p q = 1 n p n q ∑ x i ∈ G p ∑ x j ∈ G q d i j D_{pq}=\frac{1}{n_{p}n_{q}}\sum\limits_{x_{i}\in G_{p}}\sum\limits_{x_{j}\in G_{q}}d_{ij} Dpq​=np​nq​1​xi​∈Gp​∑​xj​∈Gq​∑​dij​

3. 聚合聚类

聚合聚类的具体过程如下:对于给定的样本集合,开始将每个样本分到一个类;然后按照一定规则,例如类间距离最小,将最满足规则条件的两个类进行合并;如此反复进行,每次减少一个类,直到满足停止条件,如所有样本聚成一类。

聚合聚类需要预先确定下面三个要素:

  • 距离或相似度
  • 合并规则
  • 停止条件

根据这些要素的不同组合,就可以构成不同的聚类方法。
距离或相似度可以是闵可夫斯基距离。马哈拉诺比斯距离、相关系数、夹角余弦、、
合并规则一般是类间距离最小,类间距离可以是最短距离、最长距离、中心距离、平均距离。
停止条件可以是类的个数达到阈值(极端情况类的个数是1)、类的直径超过阈值。

聚合聚类程序

若采用欧氏距离为样本之间的距离;类间距离最小作为合并规则,其中最短距离为类间距离;类的个数是1,即所有样本聚为一类,为停止条件。则

输入:n 个样本组成的样本集合即样本之间的距离
输出:对样本集合的一个层次化聚类
(1)计算 n 个样本两两之间的欧氏距离 d_{ij},记作矩阵D=[d_{ij}]_{m*n}
(2)构造 n 个类,每个类只包含一个样本
(3)合并类间距离最小的两个类,其中最短距离为类间距离,构建一个新类
(4)计算新类与当前各类的距离。若类的个数为 1 ,终止计算,否则返回(3)

聚合层次聚类算法的复杂度是 O ( n 3 m ) O(n^{3}m) O(n3m),其中 m m m 是样本的维数, n n n 是样本个数

4. k 均值聚类

k k k 均值聚类是基于样本集合划分的聚类算法。 k k k 均值聚类将样本集合划分为 k k k 个子集,构成 k k k 个类,将 n n n 个样本分到 k k k 个类中,每个样本到其所属类别的中心的距离最小。每个样本只能属于一个类,所以 k k k 均值聚类是硬聚类。

4.1 模型

4.2 策略

4.3 算法

>>>from sklearn.cluster import KMeans
>>>from sklearn.metrics import silhouette_samples, silhouette_score
>>>import numpy as np
>>>X = np.array([[1, 2], [1, 4], [1, 0],[4, 2], [4, 4], [4, 0]])
>>>kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
# 训练模型,默认为'k-means ++':以智能方式为k均值聚类选择初始聚类中心,以加速收敛。>>>print(kmeans.labels_)
[0 0 0 1 1 1] # 每个点的标签>>>print(kmeans.cluster_centers_)
[[1. 2.][4. 2.]] # 集群中心的坐标>>>print(kmeans.inertia_)
16.0 # 样本到其最近聚类中心的平方距离之和。>>>print(kmeans.predict([[0, 0], [4, 4]]))
[0 1] # 预测X中每个样本所属的最近集群。>>>print(kmeans.transform([[0, 0], [4, 4]]))
[[2.23606798 4.47213595][3.60555128 2.        ]] # 将X转换为簇距离空间。
"""
功能:K均值聚类
说明:提前设置函数模型为2类
"""
"""
导入项目所需的包
"""
import pandas as pd
import numpy as np
import matplotlib.pyplot as pltfrom sklearn import datasetsfrom sklearn.cluster import KMeans# 使用交叉验证的方法,把数据集分为训练集合测试集
from sklearn.model_selection import train_test_split# 加载数据集
def load_data():iris = datasets.diabetes()"""展示数据集的形状diabetes.data.shape, diabetes.target.shape"""# 将数据集拆分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.10, random_state=0)return X_train, X_test, y_train, y_test
# 使用KMeans考察线性分类KMeans的预测能力
def test_KMeans(X_train,X_test,y_train,y_test):# 选择模型,把数据交给模型训练y_pred = KMeans(n_clusters=2, random_state=0).fit_predict(X_train)"""绘图"""fig = plt.figure()ax = fig.add_subplot(1, 1, 1)ax.scatter(X_train[:, 2], X_train[:, 3], c=y_pred)ax.set_xlabel("data")ax.set_ylabel("target")ax.set_title("K-means")ax.legend(framealpha=0.5)plt.show()return
if __name__=="__main__":X_train,X_test,y_train,y_test=load_data() # 生成用于分类的数据集test_KMeans(X_train,X_test,y_train,y_test) # 调用 test_KMeans

4.4 算法特性

4.4.1 总体特点

4.4.1 收敛性

4.4.1 初始类的选择

4.4.1 类别数 k 的选择

from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_samples, silhouette_scoreimport matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as npX, y = make_blobs(n_samples=500,n_features=2,centers=4,cluster_std=1,center_box=(-10.0, 10.0),shuffle=True,random_state=1)  # 导入数据集range_n_clusters = [2, 3, 4, 5, 6]for n_clusters in range_n_clusters:fig, (ax1, ax2) = plt.subplots(1, 2)fig.set_size_inches(18, 7)ax1.set_xlim([-0.1, 1])# 给轮廓之间留出 (n_clusters+1)*10 的空间ax1.set_ylim([0, len(X) + (n_clusters + 1) * 10])# K_means聚类clusterer = KMeans(n_clusters=n_clusters, random_state=10)cluster_labels = clusterer.fit_predict(X)# 计算平均轮廓系数silhouette_avg = silhouette_score(X, cluster_labels)print("For n_clusters =", n_clusters,"The average silhouette_score is :", silhouette_avg)# 计算每个样本的轮廓系数sample_silhouette_values = silhouette_samples(X, cluster_labels)y_lower = 10for i in range(n_clusters):# 筛选出类别为i的样本的轮廓系数,并对轮廓系数进行排列ith_cluster_silhouette_values = sample_silhouette_values[cluster_labels == i]ith_cluster_silhouette_values.sort()print(ith_cluster_silhouette_values)size_cluster_i = ith_cluster_silhouette_values.shape[0]y_upper = y_lower + size_cluster_i# cm.nipy_spectral是颜色映射的杂项色color= cm.nipy_spectral(float(i) / n_clusters)# 在x轴之间进行颜色填充颜色填充,第一个参数是y值,第二三个参数是x值,在这两个值之间进行颜色填充ax1.fill_betweenx(np.arange(y_lower, y_upper),0, ith_cluster_silhouette_values,facecolor=color, edgecolor=color, alpha=0.7)# text可以在任意位置添加文字ax1.text(-0.05, y_lower + 0.5 * size_cluster_i, str(i))y_lower = y_upper + 10ax1.set_title("The silhouette plot for the various clusters.")ax1.set_xlabel("The silhouette coefficient values")ax1.set_ylabel("Cluster label")# 所有值的平均轮廓线的垂直线ax1.axvline(x=silhouette_avg, color="red", linestyle="--")ax1.set_yticks([])  # Clear the yaxis labels / ticksax1.set_xticks([-0.1, 0, 0.2, 0.4, 0.6, 0.8, 1])# 画出样本点colors = cm.nipy_spectral(cluster_labels.astype(float) / n_clusters)ax2.scatter(X[:, 0], X[:, 1], marker='.', s=30, lw=0, alpha=0.7,c=colors, edgecolor='k')# 画出聚类中心点centers = clusterer.cluster_centers_ax2.scatter(centers[:, 0], centers[:, 1], marker='o',c="white", alpha=1, s=200, edgecolor='k')# enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标for i, c in enumerate(centers):ax2.scatter(c[0], c[1], marker='$%d$' % i, alpha=1,s=50, edgecolor='k')ax2.set_title("The visualization of the clustered data.")ax2.set_xlabel("Feature space for the 1st feature")ax2.set_ylabel("Feature space for the 2nd feature")plt.suptitle(("Silhouette analysis for KMeans clustering on sample data ""with n_clusters = %d" % n_clusters),fontsize=14, fontweight='bold')plt.show()

张小贤的平凡之路---机器学习之聚类---周志华《机器学习》相关推荐

  1. 重磅大礼!100本《机器学习》by周志华,免费送!

    我  相  信  这  么  优秀  的  你 已  经  置 顶  了  我 亲爱的小伙伴们~ 我可想死你们啦! 福利小编再次上线 继续给大家送温暖~ 100本! <机器学习> by 周 ...

  2. 周志华机器学习(6):支持向量机

    周志华机器学习(6):支持向量机 6 支持向量机 6.1 间隔与支持向量 6.2 对偶问题(dual problem) 6.3 核函数 6.4 软间隔与正则化 基本是大段摘录西瓜书加上一些自己的解释补 ...

  3. 周志华机器学习(西瓜书)学习笔记(持续更新)

    <周志华机器学习>笔记 第1章 绪论 1.1 引言 1.2 基本术语 1.3 假设空间 1.4 归纳偏好 1.5 发展历程 1.6 应用现状 第2章 模型评估与选择 2.1 经验误差与过拟 ...

  4. 【读书笔记】周志华 机器学习 第二章 模型评估和选择

    第二章 模型评估和选择 1 欠拟合和过拟合 偏差和方差 1.1 欠拟合和过拟合 1.2 偏差和方差 2 评估方法 性能度量 2.1 评估方法 2.1.1 留出法 2.2.2 交叉验证法 2.2.3 自 ...

  5. 《周志华机器学习详细公式推导版》完整PDF首发!1.1w+标星开源项目pumpkin-book...

    Datawhale发布 作者:谢文睿.秦州.Datawhale南瓜书团队 文章来源:Datawhale 作者:Datawhale 一年前,Datawhale开源项目南瓜书发布,受到全网转发,一年后,南 ...

  6. 周志华机器学习--模型评估与选择

    周志华机器学习–模型评估与选择 第一章 绪论 第二章 模型评估与选择 第三章 线性模型 第四章 决策树 第五章 支持向量机 第六章 神经网络 第七章 贝叶斯分类器 第八章 集成学习和聚类 文章目录 周 ...

  7. 周志华机器学习-决策树

    周志华机器学习-决策树 第一章 绪论 第二章 模型评估与选择 第三章 线性模型 第四章 决策树 第五章 支持向量机 第六章 神经网络 第七章 贝叶斯分类器 第八章 集成学习和聚类 文章目录 周志华机器 ...

  8. 【强烈推荐】Github star 10K+,周志华机器学习详细公式推导!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! [导读]:今天给大家推荐一本超级nice的机器学习理论推导书籍,它就是<西瓜 ...

  9. 周志华-机器学习西瓜书-第三章习题3.3 编程实现对率回归

    本文为周志华机器学习西瓜书第三章课后习题3.3答案,编程实现对率回归,数据集为书本第89页的数据 使用tensorflow实现过程 # coding=utf-8 import tensorflow a ...

最新文章

  1. fileupload的回调方法_jQuery File Upload文件上传插件使用详解
  2. MVC3----筛选数据(BeginForm:输出form表单)
  3. Android开发8:UI组件TextView,EditText,Button
  4. PHP中使用redis 执行lua脚本
  5. 03-运行时数据区概述及线程
  6. 用户管理:搭建系统微服务
  7. RabbitMQ Network Partitions
  8. 牛客网【每日一题】4月16日题目精讲 逆序对
  9. 15分钟内开始使用Amazon Web Services和全自动资源调配
  10. 腾讯回应QQ读取用户浏览器历史记录
  11. LeetCode 742. 二叉树最近的叶节点(建立父节点信息+BFS)
  12. php月历,PHP生成月历代码
  13. android获取app用户数据,专项研究:Android收集用户数据是iPhone的20倍!
  14. 【Elastischearch】7.6 版本 update 后 refresh 慢,性能问题导致稳定性问题
  15. gridreport如何设置打印3次_pdfFactory如何设置限制打印和浏览文档权限
  16. 【译】理解JavaScript闭包——新手指南
  17. js 将点击事件当作参数引入_NodeJS中的事件驱动程序实现原理解析
  18. scratch3.0 整体页面介绍
  19. 安装历史版本nvidia显卡驱动
  20. 英语流利说 level4 unti2 part1-extinction events 1

热门文章

  1. 固定屏幕显示模式 ScreenOrientation
  2. 一代经典销声匿迹:WinXP彻底再见了!
  3. 2022年湖北省房地产经纪人(房地产交易制度政策)练习题及答案
  4. 被打脸的潇洒哥(推递推式)
  5. Ardunio开发实例-TCS3200颜色传感器
  6. 果果带你写链表,小学生看了都说好
  7. Android 开发架构-MVC MVP MVVM详解
  8. VCS和UVM常用编译选项
  9. 【驱动】以太网扫盲(三)PHY的控制器驱动框架分析
  10. 步爱奇艺与腾讯视频的后尘,B站扬帆出海能否跨海破圈?