当前位置: 首页 > news >正文

聚类 kmeans | 机器学习

聚类 刘建平

1、算法原理:

是一种无监督学习算法,其主要目的是将数据点分为k个簇,距离近的样本具有更高的相似度,距离近的划分为一个簇,一共划分k个簇,**让簇内距离小,簇间距离大。**距离是样本点到之心的距离。所有样本点到质心距离之和最小,就认为样本越相似。

  • 聚类和分类区别
    在这里插入图片描述

簇内平方和:
在这里插入图片描述
在这里插入图片描述
质心 :簇中所有data的均值为质心
k:簇的个数

2、聚类流程

随机选取k个质心点,形成初始簇,定义代价函数(簇内平方和)开始计算每个样本点到初始质心的距离,定义迭代轮数或者(函数收敛,簇新不发生变化)再次形成新的簇,又会形成新的质心点,反复迭代。
质心:样本集所有data的均值
K:簇的个数
1、初始化聚类中心:随机选取k个样本点作为初始质心位置,计算每个质心点周边点到该点的距离,
2、根据距离分组:计算每个数据点与聚类中心之间的距离,把每个样本点分配到距离最近的初始质心上,形成最初的簇。
3、重新计算聚类中心:对每个组重新计算聚类中心,求解簇中所有样本点的均值点,作为新的质心
4、判断是否结束:把每个样本点重新分配到距离最近的质心上,再形成新的簇。(类中心的位置不断地被更新,直到聚类中心的位置不再发生变化或达到最大迭代次数。当两次迭代的聚类中心位置趋于相同时,其欧氏距离之和会逐渐减小。因此,如果两次迭代的聚类中心位置趋于稳定时,其欧氏距离之和会小于预设的阈值(如0.0001),可以认为本次迭代已经趋近于收敛,算法可以终止。)
5、输出:输出聚类结果,即每个数据点所属的组别。
在这里插入图片描述

3、模型评估指标

轮廓系数
簇内差异小,簇外差异大,样本与自身所在簇内其他点的平均距离要永远小于,与簇外所有样本点的平均距离。
在这里插入图片描述
在这里插入图片描述

4、Kmeans 与knn区别

kmeans是无监督,没有样本输出,knn不需要训练,对测试集的点,只需要找到在训练集中最近的k个点,用最近的k个点来决定测试点的类别。
相似之处都是最近邻思想,找出和某一个点最近的点。

5、K-means算法有哪些优缺点?有哪些改进的模型?

1、优点:

计算简单,聚类效果好
算法可解释性较强,调参容易,仅仅是k

2、缺点:

1、初始聚类中心的选择标准
k值不好把握,人工预先确定初始K值
改进方法:
对初始聚类中心的选择的优化。一句话概括为:选择批次距离尽可能远的K个点。具体选择步骤如下。

首先随机选择一个点作为第一个初始类簇中心点,然后选择距离该点最远的那个点作为第二个初始类簇中心点,然后再选择距离前两个点的最近距离最大的点作为第三个初始类簇的中心点,以此类推,直至选出K个初始类簇中心点。

2、无法对噪音和异常点有效区分
如果噪声点在空间上离各个聚簇中心都比较远,那么将其单独分为一个簇可能是合理的。但是,通常情况下,噪声点是不相关的或者异常的,如果将其单独分配到某个簇中,可能会影响其他簇的正确性和一致性,从而导致聚类结果不准确。
不是凸的数据集比较难收敛,
计算量大

6、常见的聚类算法

1 DBSCN 基于密度的聚类算法,按密度聚类,低密度为噪声,簇的个数由k确定。

7、python实现

import numpy as np
import matplotlib.pyplot as pltclass KMeans:def __init__(self, n_clusters, max_iters=100, random_state=42):self.n_clusters = n_clustersself.max_iters = max_iters #迭代次数self.random_state = random_statedef fit(self, X):# 随机初始化中心点random_state = np.random.RandomState(self.random_state)self.centers = X[random_state.choice(range(X.shape[0]), self.n_clusters, replace=False)]it = 0while it < self.max_iters:# 计算每个样本到各个聚类中心的欧氏距离dists = np.sqrt(((X[:, np.newaxis, :] - self.centers) ** 2).sum(axis=-1))# 找到距离最近的聚类中心labels = dists.argmin(axis=-1)new_centers = np.empty_like(self.centers)# 更新聚类中心for i in range(self.n_clusters):new_centers[i] = X[labels == i].mean(axis=0)# 判断聚类中心是否发生变化if np.allclose(new_centers, self.centers, rtol=1e-4, atol=1e-4):breakself.centers = new_centersit += 1def predict(self, X):dists = np.sqrt(((X[:, np.newaxis, :] - self.centers) ** 2).sum(axis=-1))return dists.argmin(axis=-1)
# ```# 使用示例:# ```python
from sklearn.datasets import make_blobsX, _ = make_blobs(n_samples=500, centers=4, cluster_std=0.60, random_state=0)km = KMeans(n_clusters=4)
km.fit(X)plt.scatter(X[:, 0], X[:, 1], c=km.predict(X))
plt.scatter(km.centers[:, 0], km.centers[:, 1], s=200, marker='x', c='red')
plt.show()
# ```

输出结果:
在这里插入图片描述

相关文章:

聚类 kmeans | 机器学习

聚类 刘建平 1、算法原理&#xff1a; 是一种无监督学习算法&#xff0c;其主要目的是将数据点分为k个簇&#xff0c;距离近的样本具有更高的相似度&#xff0c;距离近的划分为一个簇&#xff0c;一共划分k个簇&#xff0c;**让簇内距离小&#xff0c;簇间距离大。**距离是样…...

求职咨询Job Information

前言 加油 原文 求职咨询常用会话 ❶ I want to apply for a job which enables me to use my major. 我想要申请一个能用到我的专业知识的职业。 ❷ I have the capability of operating the computer. 我有操作电脑的能力。 ❸ My dream is to be an excellent interpret…...

怎么去除pdf文件的水印?好用软件说明

怎么去除pdf文件的水印&#xff1f;在某些情况下&#xff0c;PDF 文件的水印可能会影响文件的可读性和美观度。为了解决这个问题&#xff0c;您可以考虑使用其他方法来标记文档&#xff0c;例如添加页眉或页脚。另一种选择是使用透明度更低的水印&#xff0c;这样它就不会太过分…...

1-ELK+ Elasticsearch+head+kibana、企业内部日志分析系统

ELK:日志收集平台 ELK由ElasticSearch、Logstash和Kibana三个开源工具组成&#xff1a; 概念图 组件介绍 1、Elasticsearch&#xff1a; ElasticSearch是一个基于Lucene的开源分布式搜索服务。只搜索和分析日志 特点&#xff1a;分布式&#xff0c;零配置&#xff0c;自…...

ctfshow愚人杯web复现

easy_signin 题目url base64解码是face.png&#xff0c;尝试flag.txt和flag.php&#xff0c;base64加密后传入都不对&#xff0c;用index.php加密后传入&#xff0c;看源码 将后面的base64解密得到flag 被遗忘的反序列化 源码 <?php# 当前目录中有一个txt文件哦 error_r…...

商品推荐Promoting Products

目录 前言原文内容:推荐常用会话商品推荐常用会话商品推荐常用会话前言 加油 原文内容: ❶ I promise that our product is superior. 我承诺我们的产品比别的家的好。 ❷ Our product is very attractive to young people. 我们的产品很吸引年轻人。 ❸ I want to buy th…...

整懵了,蚂蚁金服4面成功拿下测开offer,涨薪6k,突然觉得跳槽也不是那么难

蚂蚁的面试挺独特的&#xff0c;每轮面试都没有HR约时间&#xff0c;一般是晚上8点左右面试官来一个电话&#xff0c;问是否能面试&#xff0c;能的话开始面&#xff0c;不能就约一个其他时间。 全程4面&#xff0c;前四面技术面&#xff0c;电话面试&#xff0c;最后一面是HR面…...

《扬帆优配》个人养老金投资最新成绩出炉 七成养老FOF跑输基准

自去年底落地以来&#xff0c;个人养老金制度运转已有4个多月。运转以来&#xff0c;设置Y比例的个人养老FOF&#xff08;基金中的基金&#xff09;、个人养老金理财、个人养老储蓄、个人养老金稳妥四大产品继续扩容&#xff0c;形成了个人养老金初期的业态样貌。并且历经一季度…...

用Qt编写STM32烧录软件(ISP模式)代码

1.前言 之前写了一篇【用Qt编写STM32烧录软件&#xff08;ISP模式&#xff09;】&#xff0c;但是在文中没有具体的实现代码。 现在补上&#xff0c;各位有兴趣的同学可以参考以下。但是代码里面还有很多没有完善的&#xff0c;必定会存在一些bug&#xff0c;目前只是堪堪能用…...

Excel技能之美观排版

一个普通的Excel文件&#xff0c;想要变得好看&#xff0c;除了要掌握相关技能&#xff0c;还要用心。 美观排版&#xff0c;离不开的技能有字体、字体大小、字体颜色、背景色&#xff0c;等等。了解不同的效果用在什么样的场景&#xff0c;才能得心应手&#xff0c;融会贯通&…...

兆芯最新X86 CPU曝光:性能与英特尔/AMD相比,没落后10年

众所周知&#xff0c;在PC领域&#xff0c;X86完全是处于垄断地全的&#xff0c;至少占了90%以上的份额。其它的像MIPS、ARM、RISC-V等等&#xff0c;都不是X86的对手。 这与X86是复杂指令集有关&#xff0c;更与X86绑定了windows操作系统&#xff0c;有坚固的intel联盟有关&am…...

【Go自学】一文搞懂Go的strconv模块

一、 strconv包 strconv包实现了基本数据类型与其字符串表示的转换&#xff0c;主要有以下常用函数&#xff1a; Atoi()、Itoa()、parse系列、format系列、append系列。 其中需要注意的是Atoi、parse系列的返回值是两个&#xff0c;分别是result和error&#xff0c;造成这种现…...

SpringBoot整合Admin服务监控(图文详细)

SpringBoot整合Admin服务监控组件 1 SpringBootAdmin 简介 1.1 概述 SpringBootAdmin 是一个非常好用的监控和管理的开源组件&#xff0c;该组件能够将 Actuator 中的信息进行界面化的展示&#xff0c;也可以监控所有 Spring Boot 应用的健康状况&#xff0c;提供实时警报功…...

设计模式-结构型模式-组合模式

我们很容易将“组合模式”和“组合关系”搞混。组合模式最初只是用于解决树形结构的场景&#xff0c;更多的是处理对象组织结构之间的问题。而组合关系则是通过将不同对象封装起来完成一个统一功能. 组合模式介绍 组合模式(Composite Pattern) 的定义是&#xff1a;将对象组合…...

VScode开发工具总结

目录 高效使用VScode工具 vscode 字体放大缩小快捷键 Vscode翻译插件推荐 code-translator插件​编辑 VsCode自动格式化代码 高效使用VScode工具...

opencv 解码视频流,c++ 代码写法

#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main() { // 打开视频流 VideoCapture cap("your_video_stream_url"); // 检查视频流是否成功打开 if (!cap.isOpened()) { …...

Android 12.0 修改wifi信号强度

1.前言 在12.0的系统rom产品定制化开发中,在进行产品开发中,对应系统定制会有各种各样的需求,对纯wifi产品而言,对于wifi要求也是越来越高,因此有客户要求对wifi信号强度做定制,修改信号强度来增强显示wifi信号,所以要对wifi显示信号强度的相关代码做修改 2.修改wifi…...

Linux——容器简介

1.容器技术 软件应用通常依赖运行时环境提供的其他库、配置文件或服务&#xff0c;在运行时环境安装在物理主机或虚拟机上运行的操作系统&#xff0c;同时应用依赖项也会随着该操作系统一起安装在主机上。 主要弊端是依赖项会受运行时环境的影响&#xff0c;引用所需的支持软件…...

CMOS图像传感器——pipeline像素控制

一、传统像素操作 传统CMOS图像传感器的芯片架构中,像素的控制信号从水平方向驱动,像素的源极跟随器输出电压垂直地输出到位于顶部和底部的模拟前端读出电路,其具体实现方式如下图所示,其中RST, TX和SEL是像素水平控制信号,像素输出电压PIX OUT垂直地传输到读出电路。 …...

AI工具(ChatGPT)常用指令,持续更新...

要国内使用AI工具&#xff0c;关注&#xff1a;码视野&#xff0c;回复&#xff1a;1002使用VensiGPT时&#xff0c;当你给的指令越精准&#xff0c;它回复就会越完美&#xff0c;例如&#xff0c;如果你要请它协助撰写文案&#xff0c;如果没有给与指定情景与目标&#xff0c;…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...