机器学习---聚类算法

news/2024/5/20 9:13:38 标签: 聚类, 机器学习, 算法

目录

    • 【写在前面】
    • 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【本人的毕业设计系统中有用到】

优点:【来自百度百科】

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

在这里插入图片描述

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

K-均值

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

高斯混合模型

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

【写在最后】

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

http://www.niftyadmin.cn/n/164815.html

相关文章

Java反射(详细学习笔记)

Java反射 1. Java反射机制概述 Reflection(反射)是java被视为java动态语言的关键,反射机制允许程序在执行期间借助于Reflection API获取任何类的内部信息,并能直接操作任意对象的内部属性及方法。 Class c Class.forName(&quo…

【面试题系列】Java多线程常见面试题

目录 序言 问题 1.Java中的线程有哪些状态,它们之间是如何转换的? 2.什么是Java中的线程安全?怎么实现 3.Java中线程的创建方法有哪些 3.1 继承Thread类并覆盖run()方法 3.2 实现Runnable接口 3.3 使用Lambda表达式 4.什么是死锁&a…

SVG进阶

背景 日常工作中使用SVG语法实现了部分图形的绘制&#xff0c;包含一些简单的图标&#xff0c;以及复杂的甘特图、里程碑等。过程中也遇到一些特殊的需求与问题。现针对相关的知识点进行进一步梳理总结&#xff0c;加深印象并方便查看。 SVG动画 <animate></animat…

内核实验(九):添加IO驱动的阻塞读写功能

一、篇头 继续使用qemu调试内核的实验。本章复习阻塞与非阻塞IO的概念和机制&#xff0c;然后对之前实验&#xff08;八&#xff09;的代码做少许修改&#xff0c;添加阻塞的IO读写。 二、系列文章 略…… 三、实验环境 编译服务器NFS&#xff1a;ubuntu 22.04Qemu 虚拟机…

函数计算导论 - AI 时代助燃剂

开始之前 开始之前请先鉴赏各家公有云的函数计算&#xff08;自行鉴赏&#xff0c;笔者不发表任何评论&#xff09; 阿里云&#xff1a; 腾讯云&#xff1a; Laf: 函数计算价值 每个企业都应该标配一个函数计算平台&#xff0c;不管是直接使用公有云还是涉及敏感数据需要私有…

Opencv+Python学习记录12:色彩空间类型转换(内附详细代码)

一&#xff0c;色彩空间分类1.GRAY色彩空间GRAY&#xff08;灰度图像&#xff09;通常指8位灰度图&#xff0c;具有256的个灰度级&#xff0c;像素值的范围是[0&#xff0c;255]。当图像由RGB色彩空间转换为GRAY色彩空间时&#xff0c;处理方式如下&#xff1a;GRAY0.299*R0.58…

手敲Mybatis(六)-反射工具天花板

历时漫长的岁月&#xff0c;终于鼓起勇气继续研究Mybatis的反射工具类们&#xff0c;简直就是把反射玩出花&#xff0c;但是理解起来还是很有难度的&#xff0c;涉及的内容代码也颇多&#xff0c;所以花费时间也比较浩大&#xff0c;不过当了解套路每个类的功能也好&#xff0c…

44-Dockerfile-ADD/COPY指令

ADD/COPY指令前言ADD作用格式使用示例COPY作用格式示例ADD和COPY的区别前言 本篇来学习下Dockerfile中的AGR/ENV指令 ADD 作用 可以将上下文指定的内容添加&#xff08;复制&#xff09;到镜像中&#xff0c;如果是压缩包&#xff0c;ADD 会自动解压&#xff1b;如果是远程…