聚类算法
聚类算法简介:
聚类算法是一种典型的无监督学习算法,主要用于将相似的样本自动归到一个类别中。
聚类算法api初步使用:
from sklearn.datasets.samples_generator import make_blobs
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 生成数据
x, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1, -1], [0, 0], [1, 1], [2, 2]],
cluster_std=[0.4, 0.2, 0.2, 0.2],
random_state=9)
# 绘制散点图
plt.figure(figsize=(20,8))
plt.scatter(x[:,0],x[:,1],c=y)
plt.show()
# 用KMeans进行分类
# 建立模型
estimator = KMeans(n_clusters=4)
# 训练模型
estimator.fit(x)
# 获取分类结果
y_predict = estimator.predict(x)
# 绘制散点图
plt.figure(figsize=(20,8))
plt.scatter(x[:,0],x[:,1],c=y_predict)
plt.show()
聚类算法api初步使用:
(1)随机选择k个样本作为k个类别的质心
(2)计算所有样本到质心的距离
(3)样本离哪个质心近,就把它划为哪个类别
(4)划分好k个类别之后,重新计算质心的坐标,计算方法是取类别内的样本的各个特征值的平均值作为新质心相应的坐标
(5)重复2、3、4步,直到质心的坐标不再变化为止
聚类的模型评估:
误差平方和:所有样本到对应类别中心的距离(欧氏距离)的平方加起来
SC轮廓系数:取值[-1,1],其值越大越好,如果为负值,则该样本可能分类结果有误
CH系数:分数越高聚类效果越好
算法优化:
Canopy算法,K-means++,二分k-means,k-medoids(k-中心聚类算法),Kernel k-means,ISODATA,Mini Batch K-Means
特征降维:
定义:降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组"不相关"主变量的过程。