人工智能-聚类算法

news2024/11/15 13:43:56

1、聚类算法简介

典型的无监督算法,主要用于将相似的样本自动归到一个类别中。
根据样本之间的相似性,将样本划分到不同的类别中,对于不同的相似度计算方法,会得到不同的聚类结果。常用的相似度计算方法是欧式距离法

聚类算法与分类算法的区别:
聚类算法是无监督的学习算法,而分类算法属于监督学习。

2、聚类算法API

API:sklearn.cluster.KMeans(n_clusters=8)
参数:n_clusters要聚类的中心数,默认值8
调用方法:estimator.fit(x)、estimator.predict(x)、estimator.fit_predect(x)-指先fit再预测

2.1案例

import matplotlib.pyplot as plt
#from sklearn.datasets.samples_generator import make_blobs
from sklearn.cluster import KMeans
#from sklearn.metrics import calinski_harabaz_score

#创建数据
x,y = make_bloks(n_samples=1000,n_features=2,centers=[[-1,-1],,[0,0],[1,1],[2,2]],cluster_std=[0.4,0.2,0.2,0.2],random_state=9)
#生成1000个数,两个特征值,4个中心点,标准差越大越离散,
plt.scatter(x[:,0],x[:,1],marker="o")
plt.show()

在这里插入图片描述

#kmeans训练且可视化
y_pre = KMeans(n_clusters=2,random_stats=9).fit_predict(x)

#可视化展示
plt.scatter(x[:,0],x[:,1],c=y_pre)
plt.show()
#用cn_sccie查看最后效果
print(calinski_harabaz_score[x,y_pre])  #评估函数越大越好,输出:3116

在这里插入图片描述

3、聚类算法实现流程

3.1思路

K-初始中心点个数
means - 中心点到其他数据点距离的平均值

流程:

  1. 随机设置k个特征空间内的点作为初始的聚类中心
  2. 对于其他每个点,计算到这k个中心的距离,最近的中心作为标记类别
  3. 对已经标记好类别后,重新计算出每个聚类的心中心点(平均值)
  4. 如果计算得到的新中心点与原中心点一样则结束,否则重新回到第二步
    在这里插入图片描述
    在大规模数据集上,K-Means的收敛速度比较慢
    K-Means一点会停止迭代的

4、误差评估

4.1误差平方和

K-Means中的SSE:
在这里插入图片描述
在这里插入图片描述
SSE越小越好
缺点:

4.2 肘方法–确定K值

横轴:k值,纵轴:方差
取拐点的k值
在这里插入图片描述

4.3 轮廓系数法

在这里插入图片描述
S越接近1,效果越好。越接近-1,效果越不好
使得内部距离最小化,外部距离最大化

4.4 CH系数

迹,对角线元素之和=秩的和
在这里插入图片描述
S(K)越大聚类越好

要达到的目的:用尽量少的类别聚类尽量多的样本,同时获得好的聚类效果

5、算法优化

5.1KMeans算法小结

优点

  1. 原理简单,实现容易
  2. 聚类效果中上(依赖K的选择)
  3. 空间复杂度o(N),时间复杂度o(lkN)(N为样本点个数,K中心点个数,I迭代次数)
    缺点
  4. 对离群点,噪声敏感
  5. 结果不一定全局最优,只能保证局部最优(与K值和初始点的选择有关)
  6. 很难发现大小差别很大的簇及进行增量计算

5.2 改进1-Canopy算法

初始中心点的选择:避免离的太近
确定初始点的选择步骤:
先随机一个,然后在外围再选一个
在这里插入图片描述

5.3 改进2-K-means++

目的也是让初始中心点尽可能远
在这里插入图片描述

5.4 改进3- 二分k-means

步骤:
1,将所有点作为一个簇
2,将该簇一分为二
3,选择能最大限度降低聚类代价函数(即误差平方和)的簇划分为两个簇
4,依次进行下去,直到簇的数目等于用户给定的数目K为止

5.5 改进4-K-medoids

与k-means的区别在于:确定新点时,不是取的平均值,而是取的到其他点的距离之和最小的点
因此,计算量剧增

在这里插入图片描述

6、特征降维

6.1 降维定义

降维:在某些特定限定条件下,降低随机变量个数,得到一组"不相关"的主变量的过程

降维的两种方式:特征选择、主成分分析

6.2 特征选择

数据中包含冗余或无关变量(或称特征、属性、指标等),从原特征中找出主要特征
方法:

  • Filter过滤式:
    p0817

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/131245.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年总结 2023展望

前言 今天是2022年最后一天,姑且简单总结这一年。这一年从头到尾发生了很多翻天覆地的事件。回看去年2021年的年度总结还是有些遗憾,完成度4/7。 回顾 2021 年立下的 flag: 写文章30篇 没有完成,技术和知识是在有断断续续学习&a…

【Linux】多线程

目录 一、什么是线程 1、线程的基本认识 2、Linux线程与接口关系的认识 3、创建线程 4、线程等待 5、线程终止 6、线程分离 二、线程的优点 三、线程的缺点 四、线程与进程的关系 1、线程安全与重入 2、不可重入情况 3、可重入情况 4、可重入与线程安全的联系 五…

算法合集 —— 数组篇

算法 —— 数组 目录算法 —— 数组1.二分查找1.1二分查找习题集2.双指针法2.1双指针法习题集3.滑动窗口3.1滑动窗口习题集4.二维数组4.1二维数组习题集1.二分查找 二分查找适用于,在有序排列的数组中查找某一指定元素。 其原理为范围搜索:如果这个元素…

opencv-python常用函数解析及参数介绍(四)——图像阈值

图像阈值处理前言1.改变图像颜色灰度图HSV图2.图像阈值图像中数值对应的效果函数与参数阈值处理效果前言 在很多任务当中,首要的任务就是对图像进行阈值处理,为后续其他操作做准备,本文将介绍5种阈值处理的方法以及参数设置,同时…

API 概述

API 概述目录概述需求:设计思路实现思路分析1.High-Level API :用于事务边界定义、控制及事务状态查询。2.2. High-Level API5.2.2 GlobalTransactionContextTransactionalTemplateLow-Level API参考资料和推荐阅读Survive by day and develop by night.…

网络协议总结

网络协议总结网络模型网络协议TCP/IP 模型网络接入层封装与解封装实际数据传输举例发送数据包接收数据包网络接口处理IP 模块处理TCP 模块处理应用程序处理网络构成通信介质与数据链路网卡二层交换机路由器 / 三层交换机![在这里插入图片描述](https://img-blog.csdnimg.cn/a8e…

F280049C General-Purpose Input/Out(GPIO)

​ 文章目录GPIO8.1 简介8.2 配置概述8.3 ADC引脚上的数字输入(AIO)8.4 数字通用I/O控制8.5 输入限定8.5.1 异步输入8.5.2 仅与SYSCLKOUT同步8.5.3 使用采样窗口进行鉴定8.6 SPI信号8.7GPIO和外设引脚复用8.7.1GPIO复用8.7.2 外设复用8.8 内部上拉配置要…

基础架构:一条SQL查询语句是如何执行的?

这是专栏的第一篇文章,我想来跟你聊聊 MySQL 的基础架构。我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比如,你有个最简单的表,表…

DML语句

DML语句目录概述需求:设计思路实现思路分析1.SQL 实例2.UPDATE3.DELETE4.SELECT5.是TRUNCATE参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wai…

数字DNA盗窃可能会在2023年到来

攻击者总是在不断发展并寻找访问数字系统的方法。随着人工智能的使用越来越多,量子计算有望很快成为现实,网络威胁格局的变化比以往任何时候都快。 当谈到网络安全时,我们应该始终尝试着眼于即将发生的事情以及它将产生的影响。我们不能只是…

操作系统实验7:终端设备字符显示的控制

实验目的 加深对操作系统设备管理基本原理的认识,实践键盘中断、扫描码等概念;通过实践掌握Linux 0.11对键盘终端和显示器终端的处理过程。 实验内容 本实验的基本内容是修改Linux 0.11的终端设备处理代码,对键盘输入和字符显示进行非常规…

2022-我的年终总结

去年年末,我也写了一篇年终总结。去年这一年是极度繁忙的一年,因各种原因,过年没回家,一个人在宿舍度过了凄凉的春节。而今年是丰收的一年,去年所付出的一切都在今年获得了回报,我也迎来新的生活。 新的生活…

过年春联不可少,python带你制作春联,体验不一样的过年氛围

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 每逢春节,无论城市还是农村, 家家户户都要挑漂亮的红春联贴于门上,辞旧迎新,增加喜庆的节日气氛。 据说这一习俗起于宋代,在明代开始盛…

我是阿豪我的2022年年终总结.

时光如白驹过隙般,飞逝而过,来不及细品岁月的美好。一晃,2022年就过去了! 明天新的一年就来了。回忆一下2022一年都干了什么。 3月份背了大概200多道的前端面试题,疯狂的刷面试题,一天不刷几道面试题心里…

ffmpeg从某站提取视频、音频、详解

ffmpeg从某站提取视频、音频、详解 事件背景 准备链接 第一步安装下载 ffmpeg是开源软件,安装网址http://ffmpeg.org/download.html#build-windows 本人用的windows10系统 打开网址后随便你怎么下载都行,Git、或者直接下等等 按图片输入上述网址也…

【攻防世界】Web very_easy_sql

做了web才发现,原来自己是真的什么都不懂啊,不过也好,说明我有很大的进步空间呢 不闲聊了,来看题目 打开是一个登录界面,我们抓包看看返回些什么 返回包有三个需要注意的地方,我都用框框圈起来了 有一个S…

【C++】map 与 set 的介绍与使用、力扣:692. 前K个高频单词

目录 一、关联式容器 二、键值对 三、set 3.1 set 的介绍 3.2 set 的使用 3.3. set 的使用举例 四、map 4.1 map的介绍 3.2 map 的使用 4.3 map的使用举例 五、经典练习题 1.set的使用 2.map的使用 思路一(稳定排序): 思路二(priority_queue)&#x…

jvm参数说明

-Xmx3550m:设置JVM最大堆内存为3550M。 -Xms3550m:设置JVM初始堆内存为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xss128k:设置每个线程的栈大小。JDK5.0以后每个线程栈大小为1M,之…

新式 AIMD 拥塞控制

周三晚上发了一则朋友圈,今天整理一下: ​ AIMD 过程可推导出 TCP 吞吐公式: TaRTTbpT\dfrac{a}{RTT}\dfrac{b}{\sqrt{p}}TRTTa​p​b​ a,b 分别为与 AIMD 参数和过程有关,该公式结论内置公平性。设 MSS 1460&…

【MySQL】九,MySQL逻辑架构剖析

服务器处理客户端请求 Connectors 外部的各种类型的连接客户端。 第一层:连接层 客户端访问 MySQL 服务器前,首先要建立 TCP 连接。 经过三次握手成功建立连接后,MySQL对传输过来的账号密码做身份认证、权限获取。 如果用户名密码错误&am…