一. 聚类算法简介
概念
无监督学习算法
根据样本之间的相似性,将样本划分到不同的类别中;不同的相似度计算方法,会得到不同的聚类结果,常用的相似度计算方法有欧式距离法。
聚类算法的目的是在没有先验知识的情况下,自动发现数据集中的内在结构和模式。
使用不同的聚类准则, 产生的聚类结果不同
应用场景
聚类算法分类
根据聚类颗粒度分类
根据实现方法分类
-
K-means:按照质心分类,主要介绍K-means,通用、普遍
-
层次聚类:对数据进行逐层划分,直到达到聚类的类别个数
-
DBSCAN聚类是一种基于密度的聚类算法
-
谱聚类是一种基于图论的聚类算法
总结
聚类概念
无监督学习算法,主要用于将相似的样本自动归到一个类别中;计算样本和样本之间的相似性,一般使用欧式距离
聚类分类
颗粒度:粗聚类、细聚类。
实现方法: K-means聚类、层次聚类、 DBSCAN聚类、谱聚类
二. API
Kmeans算法的API
Kmeans-API实践
聚类算法API
构造数据API
数据-结果
流程
代码
import os os.environ["OMP_NUM_THREADS"] = '4' # 解决内存泄露警告 from sklearn.cluster import KMeans from sklearn.datasets import make_blobs from sklearn.metrics import calinski_harabasz_score import matplotlib.pyplot as plt # 1. 构建数据集 # x是样本(点的横纵坐标), y是标签 x, y = make_blobs( n_samples=1000, # 样本数 n_features=2, # 特征数: x, y centers=[[-1, -1], [0, 0], [1, 1], [2, 2]], # 聚类中心, 也可以写数字表示中心点的数量 cluster_std=[0.4, 0.2, 0.2, 0.2], # 聚类标准差, 默认为1, 也可以写数字表示所有点的标准差 random_state=21 ) # print(x) # print(y) # 绘图显示数据集 plt.figure() plt.scatter(x[:, 0], x[:, 1], marker='o') plt.show() # 2. 模型训练预测 model = KMeans( n_clusters=4, # 蕨类中心的数量 random_s