目录

    • 【写在前面】
    • 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 sklearnprint(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 wherefrom sklearn.datasets import make_classificationfrom 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【本人的毕业设计系统中有用到】

优点:【来自百度百科】

  1. 与K-means方法相比,DBSCAN不需要事先知道要形成的簇类的数量。
  2. 与K-means方法相比,DBSCAN可以发现任意形状的簇类。
  3. 同时,DBSCAN能够识别出噪声点。
  4. DBSCAN对于数据库中样本的顺序不敏感,即Pattern的输入顺序对结果的影响不大。但是,对于处于簇类之间边界样本,可能会根据哪个簇类优先被探测到而其归属有所摆动。

显然这个结果并不是很符合预期效果。

K-均值

给定一个数据点集合和需要的聚类数目k,k由用户指定,k均值算法根据某个距离函数反复把数据分入k个聚类中。

高斯混合模型

高斯混合模型总结了一个多变量概率密度函数,顾名思义就是混合了高斯概率分布。在这种情况下,可以看到群集被完美地识别,因为数据集是作为 Gaussian 的混合生成的。

【写在最后】

  • 本文档旨在帮助准备复试面试内容,代码来自网络,侵删,谢谢。
  • 代码运行所使用的编辑器为:VS Code,运行结果均为本人实际动手操作【①】。
  • 聚类分析是一个迭代过程,在该过程中,对所识别的群集的主观评估被反馈回算法配置的改变中,直到达到期望的或适当的结果。所以一开始在我们并不知道数据集到底应该如何被划分的时候,单凭一张分类结果图很难知道我们的结果是否符合了最终的结论。