目录
- 【写在前面】
- 1、确认安装有scikit-learn库
- 2、使用 make _ classification ()建立数据集
- 3、使用模型进行分类
- 头文件汇总
- 亲和力传播
- 聚合聚类
- BIRCH 聚类
- DBSCAN【本人的毕业设计系统中有用到】
- K-均值
- 高斯混合模型
- 【写在最后】
【写在前面】
- sklearn和scikit-learn:
scikit-learn是下载下来的工具, sklearn是在python调用包时候的缩写。 - 聚类的定义:
是在特征空间的输入数据中发现自然组的无监督问题。 - 聚类算法的选择
事实上,没有一个固定的聚类算法可以解决所有的问题,现实操作中,我们往往需要根据数据集的特征进行选择,而且由于函数本身的参数众多,所以找到合适的算法需要不断地调试。 - scikit-learn提供的聚类算法:
1、亲和力传播
2、聚合聚类
3、BIRCH
4、DBSCAN
5、K-均值
6、高斯混合
其他:
1、Mini-Batch K-均值是K-均值的修改版本,它使用小批量的样本而不是整个数据集对群集质心进行更新,这可以使大数据集的更新速度更快,并且可能对统计噪声更健壮。
2、均值漂移聚类涉及到根据特征空间中的实例密度来寻找和调整质心。
3、OPTICS 聚类( OPTICS 短于订购点数以标识聚类结构)是上述 DBSCAN 的修改版本。
4、光谱聚类是一类通用的聚类方法,取自线性线性代数,使用从点之间的距离导出的矩阵的顶部特征向量。
1、确认安装有scikit-learn库
import sklearn
print(sklearn.__version__)
2、使用 make _ classification ()建立数据集
使用 make _ classification ()函数创建分类数据集,函数的官方介绍如下:
关键参数:
- n_samples:int,默认值=100
样本数量。 - n_features:int,默认值=20
功能的总数。其中包括n_informational
信息性特征、n_冗余
冗余特征,n_repeated
重复的功能和n_features-n_informative-n_redundant-n_repeated
无用的功能随机绘制。 - n_classes:int,默认值=2
分类问题的类(或标签)的数量。 - n_redundant:int,默认值=2
冗余功能的数量。这些特征生成为信息特征的随机线性组合。 - n_clusters_per_class:int,默认值=2
每个类的簇数。 - random_state:int,RandomState实例或None,默认值=None
确定数据集创建的随机数生成。传递一个int用于跨多个函数调用的可再现输出。
from numpy import where
from sklearn.datasets import make_classification
from matplotlib import pyplot
# 定义数据集
X, y= make_classification(n_samples=1000, n_features=2, n_classes=4, n_redundant=0, n_clusters_per_class=1,random_state=4)
# 为每个类的样本创建散点图
for class_value in range(4):
# 获取此类的示例的行索引
row_ix = where(y == class_value)
# 创建这些样本的散布
pyplot.scatter(X[row_ix, 0], X[row_ix, 1])
# 绘制散点图
pyplot.show()
可以清楚地看到4个不同的数据组在4个维度,我们希望可以找到一个自动的聚类算法很好地检测这些分组。
3、使用模型进行分类
头文件汇总
# 亲和力传播
from sklearn.cluster import AffinityPropagation
# 聚合聚类
from sklearn.cluster import AgglomerativeClustering
# BIRCH 聚类
from sklearn.cluster import Birch
# 高斯混合模型
from sklearn.mixture import GaussianMixture
# DBSCAN模型
from sklearn.cluster import DBSCAN
# KMeans模型
from sklearn.cluster import KMeans
亲和力传播
对数据执行亲和传播聚类。它作为两对数据点之间相似度的输入度量。在数据点之间交换实值消息,直到一组高质量的范例和相应的群集逐渐出现。
可以看到,效果并不理想。
聚合聚类
聚合聚类涉及合并示例,直到达到所需的群集数量为止。
这个分类结果就很不错。
BIRCH 聚类
Birch聚类算法有三个主要特性:聚类数据高效地进行分析,聚类结果可以保持稳定,而且能够处理大量数据
这个分类结果也很不错。
DBSCAN【本人的毕业设计系统中有用到】
优点:【来自百度百科】
- 与K-means方法相比,DBSCAN不需要事先知道要形成的簇类的数量。
- 与K-means方法相比,DBSCAN可以发现任意形状的簇类。
- 同时,DBSCAN能够识别出噪声点。
- DBSCAN对于数据库中样本的顺序不敏感,即Pattern的输入顺序对结果的影响不大。但是,对于处于簇类之间边界样本,可能会根据哪个簇类优先被探测到而其归属有所摆动。
显然这个结果并不是很符合预期效果。
K-均值
给定一个数据点集合和需要的聚类数目k,k由用户指定,k均值算法根据某个距离函数反复把数据分入k个聚类中。
高斯混合模型
高斯混合模型总结了一个多变量概率密度函数,顾名思义就是混合了高斯概率分布。在这种情况下,可以看到群集被完美地识别,因为数据集是作为 Gaussian 的混合生成的。
【写在最后】
- 本文档旨在帮助准备复试面试内容,代码来自网络,侵删,谢谢。
- 代码运行所使用的编辑器为:VS Code,运行结果均为本人实际动手操作【①】。
- 聚类分析是一个迭代过程,在该过程中,对所识别的群集的主观评估被反馈回算法配置的改变中,直到达到期望的或适当的结果。所以一开始在我们并不知道数据集到底应该如何被划分的时候,单凭一张分类结果图很难知道我们的结果是否符合了最终的结论。