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

K-means算法的python实现

K-means算法步骤

  1. 初始化质心:输入初始的质心位置。
  2. 分配样本:将每个数据点分配到离它最近的质心对应的簇中。
  3. 更新质心:对每个簇中的所有数据点,计算它们的均值,并将均值更新为新的质心。
  4. 重复步骤2和3,直到质心收敛(即质心不再改变或改变很小)。

K-means聚类代码实现

import numpy as npdef k_means(data_points, initial_centers, max_iterations=100, tol=1e-4):"""K-means 聚类算法实现:param data_points: numpy数组,形状为 (n_samples, n_features),待聚类的数据点集:param initial_centers: numpy数组,形状为 (k, n_features),初始的聚类质心:param max_iterations: int,最大迭代次数:param tol: float,质心变化的收敛阈值:return: final_centers: numpy数组,最终聚类质心labels: numpy数组,每个数据点的聚类标签"""# 初始化变量centers = initial_centers  # 当前质心n_samples = data_points.shape[0]  # 数据点个数k = initial_centers.shape[0]  # 聚类数labels = np.zeros(n_samples)  # 每个数据点所属的簇标签for iteration in range(max_iterations):# 1. 分配样本到最近的质心for i, point in enumerate(data_points):distances = np.linalg.norm(point - centers, axis=1)  # 计算与所有质心的欧氏距离labels[i] = np.argmin(distances)  # 找到最近质心的索引# 2. 更新质心new_centers = np.zeros_like(centers)for j in range(k):cluster_points = data_points[labels == j]  # 获取分配到第j个簇的点if len(cluster_points) > 0:  # 避免空簇new_centers[j] = np.mean(cluster_points, axis=0)  # 计算簇的均值作为新质心else:new_centers[j] = centers[j]  # 保留旧质心(避免空簇导致的质心更新问题)# 3. 判断是否收敛(质心变化是否小于阈值)center_shift = np.linalg.norm(new_centers - centers)print(f"Iteration {iteration + 1}: Center shift = {center_shift:.6f}")if center_shift < tol:print("Converged!")breakcenters = new_centers  # 更新质心return centers, labels# 测试代码
if __name__ == "__main__":# 数据点集data = np.array([[1, 2], [1, 4], [1, 0],[10, 2], [10, 4], [10, 0]])# 初始聚类中心initial_centers = np.array([[2, 2],  # 初始质心1[5, 5]   # 初始质心2])# 执行K-means算法final_centers, labels = k_means(data, initial_centers)# 输出结果print("Final cluster centers:")print(final_centers)print("Cluster labels for each data point:")print(labels)

相关文章:

K-means算法的python实现

K-means算法步骤 初始化质心&#xff1a;输入初始的质心位置。分配样本&#xff1a;将每个数据点分配到离它最近的质心对应的簇中。更新质心&#xff1a;对每个簇中的所有数据点&#xff0c;计算它们的均值&#xff0c;并将均值更新为新的质心。重复步骤2和3&#xff0c;直到质…...

客户端(浏览器)vue3本地预览txt,doc,docx,pptx,pdf,xlsx,csv,

预览文件 1、入口文件preview/index.vue2、预览txt3、预览doc4、预览pdf5、预览pptx6、预览xlsx7、预览csv 1、入口文件preview/index.vue 预览样式&#xff0c;如pdf 文件目录如图所示&#xff1a; 代码如下 <template><div class"preview-wrap" ref&…...

[SZ901]JTAG高速下载设置(53Mhz)

SZ901最高支持JTAG 53MHz的时钟频率&#xff0c;下载bit文件和固化程序的速度提升非常明显。 首先设置参数 1&#xff0c;将JTAG0 分频系数修改为3 2&#xff0c;设置参数&#xff0c;更新参数。&#xff08;完成&#xff09; 打开VIVADO VIVADO 正常识别FPGA&#xff0c;速…...

docker springboot 运维部署详细实例

环境安装 [rootiZbp1dcnzq7pzpg9607m6pZ ~]# docker -v Docker version 26.1.4, build 5650f9b镜像构建 Dockerfile 文件内容 FROM openjdk:8 # Author Info 创建人信息 MAINTAINER ratelcloudfoxmail.com ENV PORT20001 EXPOSE 20001 RUN mkdir /usr/local/ratel-boot-serv…...

Linux 查看目录命令 ls 详细介绍

Linux 和 Unix 系统中 ls 命令是用于列出目录内容。用户可以查看指定目录下的文件和子目录&#xff0c;还可以获取有关这些文件和子目录的详细信息。 基本语法&#xff1a; ls [选项] [目录]如果不指定目录&#xff0c;ls 将列出当前工作目录下的内容。 01、-a 或 --all ls…...

React Native状态管理器Redux、MobX、Context API、useState

Redux、MobX、Context API、useState都是React中用于状态管理的工具&#xff0c;但它们各自有不同的特点和使用场景。 Redux 介绍&#xff1a; Redux是一个JavaScript状态管理库&#xff0c;最初由Dan Abramov和Andrew Clark于2015年开发。它基于Flux架构&#xff0c;强调状态…...

Three.js资源-模型下载网站

在使用 Three.js 进行 3D 开发时&#xff0c;拥有丰富的模型资源库可以大大提升开发效率和作品质量。以下是一些推荐的 Three.js 模型下载网站&#xff0c;它们提供了各种类型的 3D 模型&#xff0c;适合不同项目需求。无论你是需要逼真的建筑模型&#xff0c;还是简单的几何体…...

linux 添加默认网关

在linux 可以使用 route 命令添加默认网关&#xff0c;假设添加的默认网关是192.168.159.2 添加方式如下&#xff1a; route add default gw 192.168.159.2 以上命令只需要把add 改成 del &#xff0c;就能删除刚才添加的路由 route del default gw 192.168.159.2 #该命…...

【学习笔记】深入浅出详解Pytorch中的View, reshape, unfold,flatten等方法。

文章目录 一、写在前面二、Reshape&#xff08;一&#xff09;用法&#xff08;二&#xff09;代码展示 三、Unfold&#xff08;一&#xff09;torch.unfold 的基本概念&#xff08;二&#xff09;torch.unfold 的工作原理&#xff08;三&#xff09; 示例代码&#xff08;四&a…...

CTFHUB-web(SSRF)

内网访问 点击进入环境&#xff0c;输入 http://127.0.0.1/flag.php 伪协议读取文件 /?urlfile:///var/www/html/flag.php 右击查看页面源代码 端口扫描 1.根据题目提示我们知道端口号在8000-9000之间,使用bp抓包并进行爆破 POST请求 点击环境&#xff0c;访问flag.php 查看页…...

分解质因数

给定 n个正整数 &#xff0c;将每个数分解质因数&#xff0c;并按照质因数从小到大的顺序输出每个质因数的底数和指数。 输入格式 第一行包含整数 n 接下来 n行&#xff0c;每行包含一个正整数 。 输出格式 对于每个正整数 &#xff0c;按照从小到大的顺序输出其分解质因数后&…...

前景物体提取

参考&#xff1a;精选课&#xff1a;C完整的实现双目摄像头图像采集、双目摄像头畸变矫正、前景物体提取、生成视差图、深度图、PCL点云图 前景物体提取是计算机视觉中的一个重要技术&#xff0c;可以用于视频监控、虚拟现实和计算机视觉等领域。 1.前景物体提取的原理 前景…...

Kotlin复习

一、Kotlin类型 1.整数 2.浮点 显示转换&#xff1a; 所有数字类型都支持转换为其他类型&#xff0c;但是转换前会检测长度。 toByte(): Byte toShort(): Short toInt(): Int toLong(): Long toFloat(): Float toDouble(): Double 不同进制的数字表示方法&#xff08;为了提高…...

【AI日记】24.12.17 kaggle 比赛 2-6 | 把做饭看成一种游戏 | 咖喱牛肉

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加&#xff1a;kaggle 比赛 Regression with an Insurance Dataset时间&#xff1a;9 小时睡得好很重要 读书 书名&#xff1a;富兰克林自传时间&#xff1a;0.5 小时阅读原因&#xff1a;100 美元纸…...

操作系统(14)请求分页

前言 操作系统中的请求分页&#xff0c;也称为页式虚拟存储管理&#xff0c;是建立在基本分页基础上&#xff0c;为了支持虚拟存储器功能而增加了请求调页功能和页面置换功能的一种内存管理技术。 一、基本概念 分页&#xff1a;将进程的逻辑地址空间分成若干个大小相等的页&am…...

uniapp navigateTo、redirectTo、reLaunch等页面路由跳转方法的区别

uni.switchTab 跳转到 tabBar 页面&#xff0c;并关闭其他所有非 tabBar 页面 // app.json {"tabBar": {"list": [{"pagePath": "index","text": "首页"},{"pagePath": "other","text&…...

模型 A/B测试(科学验证)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。控制变量法。 1 A/B测试的应用 1.1 Electronic Arts&#xff08;EA&#xff09;《模拟城市》5游戏网站A/B测试 定义目标&#xff1a; Electronic Arts&#xff08;EA&#xff09;在发布新版《模拟城…...

谷歌发布升级版AI视频生成器Veo 2与图像生成器Imagen 3

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

快速掌握源码部署Filebeat

文章目录 1. 裸金属安装1.1 压缩包方式安装1.2 yum方式安装 2. docker安装3. K8s安装 项目使用了Filebeat&#xff0c;现在需要运行在ARM架构的服务器上&#xff0c;但是Filebeat官方没有提供&#xff0c;需要自己编译一份 filebeat等组件的源码地址 https://github.com/elasti…...

C++ 哈希表封装unordered_map 和 unordered_set

1.源码框架 SGI-STL30版本源代码中没有unordered_map和unordered_set&#xff0c;SGI-STL30版本是C11之前的STL 版本&#xff0c;这两个容器是C11之后才更新的。但是SGI-STL30实现了哈希表&#xff0c;只容器的名字是hash_map 和hash_set&#xff0c;他是作为⾮标准的容器出现…...

多账号环境下的统一防火墙管理:AWS Firewall Manager + Network Firewall 分布式部署实战

placeholder...

Z-Image-Turbo-辉夜巫女GPU利用率:监控xinference.log与nvidia-smi协同调参指南

Z-Image-Turbo-辉夜巫女GPU利用率&#xff1a;监控xinference.log与nvidia-smi协同调参指南 1. 引言&#xff1a;为什么需要关注GPU利用率&#xff1f; 当你部署好一个像Z-Image-Turbo-辉夜巫女这样的文生图模型&#xff0c;看着它生成精美的图片时&#xff0c;有没有想过一个…...

三步轻松获取国家中小学智慧教育平台电子课本PDF:高效教学资源下载指南

三步轻松获取国家中小学智慧教育平台电子课本PDF&#xff1a;高效教学资源下载指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具&#xff0c;帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载&#xff0c;让您更方便地获取课本内…...

Wan2.1-UMT5与Python入门:零基础学会用AI生成你的第一个视频

Wan2.1-UMT5与Python入门&#xff1a;零基础学会用AI生成你的第一个视频 你是不是也刷到过那些由AI生成的酷炫短视频&#xff0c;心里痒痒的&#xff0c;觉得这技术真神奇&#xff1f;但一想到要学复杂的编程和模型部署&#xff0c;就觉得头大&#xff0c;感觉离自己很远。 别…...

OpenClaw技能开发入门:为千问3.5-27B编写自定义模块

OpenClaw技能开发入门&#xff1a;为千问3.5-27B编写自定义模块 1. 为什么需要自定义技能&#xff1f; 去年冬天&#xff0c;我发现自己每天早晨都要手动查询天气并发送给家人。重复的操作让我开始思考&#xff1a;能否让OpenClaw帮我自动完成这个任务&#xff1f;这就是我踏…...

网页时光机:如何永久保存消失的网页内容

网页时光机&#xff1a;如何永久保存消失的网页内容 【免费下载链接】wayback-machine-webextension A web browser extension for Chrome, Firefox, Edge, and Safari 14. 项目地址: https://gitcode.com/gh_mirrors/wa/wayback-machine-webextension 你是否遇到过这样…...

SSM+JSP动漫网站源码+论文

代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 分享万套开题报告任务书答辩PPT模板 作者完整代码目录供你选择&#xff1a; 《SpringBoot网站项目》1800套 《SSM网站项目》1500套 《小程序项目》1600套 《APP项目》1500套 《Python网站项目》…...

3分钟终极指南:如何永久冻结IDM试用期实现免费使用

3分钟终极指南&#xff1a;如何永久冻结IDM试用期实现免费使用 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script Internet Download Manager&#xff08;IDM&#…...

从STFT到ISTFT:窗函数、填充与流式处理的实战指南

1. 窗函数一致性&#xff1a;信号重建的隐形守护者 第一次用STFT处理语音信号时&#xff0c;我踩过一个典型坑&#xff1a;用汉宁窗做分析&#xff0c;却忘了在重建时指定相同窗函数。结果重建后的语音像被掐着脖子说话&#xff0c;高频部分全是毛刺。这个教训让我明白&#xf…...

【Java外部函数性能优化黄金法则】:20年JVM专家亲授JNI/FFM调优的7大致命误区与3步极速修复方案

第一章&#xff1a;Java外部函数优化的演进脉络与性能本质Java平台对外部函数调用&#xff08;Foreign Function & Memory API&#xff0c;即JEP 454/464/471/472&#xff09;的演进&#xff0c;标志着JVM从“纯Java世界”迈向系统级互操作的新纪元。其性能本质并非单纯降低…...