实验3:K均值聚类
介绍
在本实验中,将实现K均值聚类算法(K-means)并了解其在数据聚类上的工作原理及图像压缩上的应用。
本次实验需要用到的数据集包括:
- ex3data1.mat -2D 数据集
- hzau.jpeg -用于测试k均值聚类算法图像压缩性能的图像
评分标准如下:
- 要点1:寻找最近类中心点-----------------(20分)
- 要点2:计算均值类中心--------------------(20分)
- 要点3:随机初始化类中心-----------------(10分)
- 要点4:K均值聚类算法---------------------(20分)
- 要点5:图像压缩-----------------------------(30分)
# 引入所需要的库文件
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sb
from scipy.io import loadmat
%matplotlib inline
1 K均值聚类 K-means Clustering
在本部分实验中,将实现K均值聚类算法。
在每次迭代中,算法主要包含两个部分:寻找最近类中心点和计算均值类中心。
另外,基于初始化的需求,需创建一个选择随机样本并将其用作初始聚类中心的函数。
1.1 寻找最近类中心点
在本部分实验中,我们将为每个样本点寻找离其距离最近的类中心,并将其赋予对应的类。
具体的更新公式如下:
c i : = a r g min j = 1 , ⋯ , K ∥ x i − μ j ∥ 2 , c_i:= \mathop{ {\rm arg}\min}_{j=1,\cdots,K} \|\mathbf{x}_i-\mu_j\|_2 , ci:=argminj=1,⋯,K∥xi−μj∥2,
其中 x i \mathbf{x}_i xi为第 i i i个样本点, μ j \mu_j μj为第 j j