机器学习---聚类算法

目录

    • 【写在前面】
    • 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.kler.cn/a/1515.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Keil5安装和使用小记

随着keil版本的更新,一些使用问题一随之产生。本文针对安装目前最新版本keil软件和使用问题做一些总结。 目录1 Keil5下载&安装1.1 官网下载链接1.2 软件安装1.2.1 安装说明1.2.2 关于 51 和 ARM 共存的问题1.3 软件破解2 pack包安装 & 破解2.1 下载2.2 安装…

string的模拟实现

本文中会来进行对STL库中的SGI版本string的模拟实现,并解释其中遇到的一些问题。 为了避免与标准库中的string类重复,因此使用自己的命名空间。 成员变量 private://const char* _str;char* _str;size_t _size;size_t _capacity; 构造函数 先简单的…

【RabbitMQ笔记10】消息队列RabbitMQ之死信队列的介绍

这篇文章,主要介绍消息队列RabbitMQ之死信队列。 目录 一、RabbitMQ死信队列 1.1、什么是死信队列 1.2、设置过期时间TTL 1.3、配置死信交换机和死信队列(代码配置) (1)设置队列过期时间 (2&#xff…

2023年Android现代开发

2023年现代Android开发 下面与大家分享如何构建具有2023年最新趋势的Android应用程序。 Android是什么? Android 是一种基于 Linux 内核并由 Google 开发的开源操作系统。它用于各种设备,包括智能手机、平板电脑、电视和智能手表。 目前&#xff0c…

用Java解决华为OD机试考题,目标300+真题,清单奉上,祝你上岸

华为OD机考大纲其它语言版本华为 OD 机试题清单(机试题库还在逐日更新)详细大纲其它语言版本 本目录为华为od机试JS题解目录,其它版本清单如下 ⭐️华为OD机考 Python https://blog.csdn.net/hihell/category_12199275.html ⭐️华为OD机考 …

基于Vue+Vue-cli+webpack搭建渐进式高可维护性前端实战项目

本文是专栏《Vue SpringBoot前后端分离项目实战》的实战第一篇,将从Vue脚手架安装开始,逐步带你搭建起一套管理系统所需的架构。当然,在默认安装完成之后,会对文件目录进行初步的细化拆分,以便后续功能迭代和维护所用…

【C++】智能指针

文章目录📖 前言1. 智能指针的引入1.1 内存泄露的危害:1.2 异常安全中的内存泄露:1.3 RAII思想:1.3 拦截异常解决不了的内存泄漏:1.4 智能指针解决:2. 智能指针的拷贝2.1 直接拷贝的问题:2.2 au…

OpenHarmony之cJSON库使用介绍

一、前言 我们前面OpenHarmony设备配网 文章中,给大家提供的示例有使用cJSON解析和cJSON创建json数据的用法 那么有同学会提出疑问,我难道只能用cJSON库? 当然不是啊,你也可以用 json-parser、parson、jansson 等等三方库 回到正题…

蓝桥杯C++组怒刷50道真题(填空题)

🌼深夜伤感网抑云 - 南辰Music/御小兮 - 单曲 - 网易云音乐 🌼多年后再见你 - 乔洋/周林枫 - 单曲 - 网易云音乐 18~22年真题,50题才停更,课业繁忙,有空就更,2023/3/18/23:01写下 目录 👊填…

ElasticSearch-第二天

目录 文档批量操作 批量获取文档数据 批量操作文档数据 DSL语言高级查询 DSL概述 无查询条件 叶子条件查询 模糊匹配 match的复杂用法 精确匹配 组合条件查询(多条件查询) 连接查询(多文档合并查询) 查询DSL和过滤DSL 区别 query DSL filter DSL Query方式查…

8大核心语句,带你深入python

人生苦短 我用python 又来给大家整点好东西啦~ 咱就直接开练噜!内含大量代码配合讲解 python 安装包资料:点击此处跳转文末名片获取 1. for - else 什么?不是 if 和 else 才是原配吗? No,你可能不知道, else 是个…

django-celery-beat搭建定时任务

一、创建django项目和app 1、安装定时任务第三方包 pip install django-celery-beat # 插件用来动态配置定时任务,一般会配合 django_celery_results 一起使用,所以一起安装 django_celery_results pip install django_celery_results pip install eventlet # win…

Redis限流接口防刷

Redis限流接口防刷 Redis 除了做缓存,还能干很多很多事情:分布式锁、限流、处理请求接口幂等性。。。太多太多了~ 大家好,我是llp,许久没有写博客了,今天就针对Redis实现接口限流做个记录。废话不多说&am…

全网最火爆,Python接口自动化测试-接口数据 RSA 加密和签名实现(超详细)

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 在工作中&#xff0…

Linux - 进程控制(创建和终止)

1.进程创建fork函数初识 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。返回值:子进程返回0,父进程返回子进程id,出错返回-1getpid()获取子进程id&#xff0c…

Django4.0新特性-主要变化

Django 4.0于2021年12月正式发布,标志着Django 4.X时代的来临。参考Django 4.0 release notes | Django documentation | Django Python 兼容性 Django 4.0 将支持 Python 3.8、3.9 与 3.10。强烈推荐并且仅官方支持每个系列的最新版本。 Django 3.2.x 系列是最后…

出入了解——Vue.js

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。个人主页:小李会科技的…

数据结构 | 栈的中缀表达式求值

目录 什么是栈? 栈的基本操作 入栈操作 出栈操作 取栈顶元素 中缀表达式求值 实现思路 具体代码 什么是栈? 栈是一种线性数据结构,具有“先进后出”(Last In First Out, LIFO)的特点。它可以看作是一种受限的…

2023年安徽省中职网络安全跨站脚本攻击

B-4:跨站脚本攻击 任务环境说明: √ 服务器场景:Server2125(关闭链接) √ 服务器场景操作系统:未知 √ 用户名:未知 密码:未知 1.访问服务器网站目录1,根据页面信息完成条件&am…

Lambda表达式

第一章 Java为什么引入 Lmabda表达式目的尽可能轻量级的将代码封装为数据1.1 什么是Lambda表达式Lambda表达式也被成为箭头函数、匿名函数、闭包 Lambda表达式体现的是轻量级函数式编程思想 ‘->’符号是Lambda表达式的核心符号,符号左侧是操作参数,符…
最新文章