首页 > 编程语言 >Python28-5 k-means算法

Python28-5 k-means算法

时间:2024-07-02 10:26:46浏览次数:3  
标签:plt means kmeans 算法 聚类 Python28 centers

k-means 算法介绍

k-means 算法是一种经典的聚类算法,其目的是将数据集分成 ( k ) 个不同的簇,每个簇内的数据点尽可能接近。算法的基本思想是通过反复迭代优化簇中心的位置,使得每个簇内的点与簇中心的距离之和最小。k-means 算法的具体步骤如下:

  1. 初始化:随机选择 ( k ) 个点作为初始簇中心。

  2. 分配簇:对于数据集中每一个点,计算其到所有簇中心的距离,并将其分配到最近的簇。

  3. 更新中心:重新计算每个簇的中心,即簇内所有点的平均值。

  4. 重复步骤2和3,直到簇中心不再发生变化或达到预设的迭代次数。

代码示例及可视化

以下是一个使用 Python 实现 k-means 算法并进行可视化的示例:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans

# 生成示例数据
np.random.seed(42)
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

# 运行 k-means 算法
kmeans = KMeans(n_clusters=4)
kmeans.fit(X)
y_kmeans = kmeans.predict(X)

# 绘制结果
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')

# 绘制簇中心
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75)
plt.title('k-means Clustering')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

运行结果:

图片

代码解释

  1. 数据生成:使用 make_blobs 函数生成300个样本点,分成4个簇,每个簇的标准差为0.60。

  2. k-means 算法:使用 KMeans 类进行聚类,指定聚类数为4。通过 fit 方法对数据进行聚类,并用 predict 方法预测每个样本的簇。

  3. 可视化:使用 Matplotlib 绘制聚类结果。样本点根据其簇类别着色,并用红色标记簇中心。

这个示例展示了如何使用 k-means 算法对数据进行聚类,并通过可视化展示聚类结果和簇中心的位置。

以上内容总结自网络,如有帮助欢迎转发,我们下次再见!

标签:plt,means,kmeans,算法,聚类,Python28,centers
From: https://blog.csdn.net/Argulo/article/details/140119826

相关文章

  • 网络安全&密码学—python中的各种加密算法
    网络安全&密码学—python中的各种加密算法一、简介数据加密是一种保护数据安全的技术,通过将数据(明文)转换为不易被未经授权的人理解的形式(密文),以防止数据泄露、篡改或滥用。加密后的数据(密文)可以通过解密过程恢复成原始数据(明文)。数据加密的核心是密码学,它是研究密码系统或通信安......
  • 11.优化算法之栈
    1.删除字符串中的所有相邻重复项可以用数组模拟栈结构 classSolution{publicStringremoveDuplicates(Strings){if(s.length()<=1){returns;}StringBufferret=newStringBuffer();for(inti=0;i<s......
  • 9.优化算法之哈希表
    classSolution{publicList<List<String>>groupAnagrams(String[]strs){Map<String,List<String>>map=newHashMap<>();for(Stringstr:strs){char[]array=str.toCharArray();Arrays.......
  • 基于摄像头抓取学生人脸朝向判断学生上课状态检测的算法
    智能检测学生听课状态的网络模型:开启高效学习的新篇章 在当今数字化教育的浪潮中,我们致力于研发一款创新的检测学生听课状态的网络模型,旨在为教育领域带来革命性的变革,提升教学质量,优化学生的学习体验。 一、模型概述这款网络模型基于先进的人工智能技术和深度学习算法......
  • 基于自适应波束成形算法的matlab性能仿真,对比SG和RLS两种方法
    1.程序功能描述基于自适应波束成形算法的matlab性能仿真,对比SG和RLS两种方法.            2.测试软件版本以及运行结果展示MATLAB2022a版本运行   3.核心程序forii=1:MTKLifSEL==1fori=1:length(r)......
  • PCL 基于点云RGB颜色的区域生长算法
    RGB颜色的区域生长算法一、概述1.1算法定义1.2算法特点1.3算法实现二、代码示例三、运行结果......
  • 算法笔记:模拟过程(螺旋遍历矩阵)
    1模拟过程“模拟过程题”通常指的是那些要求编程者通过编写代码来“模拟”或重现某个过程、系统或规则的题目。这类题目往往不涉及复杂的数据结构或高级算法,而是侧重于对给定规则的精确执行和逻辑的清晰表达。其中螺旋遍历矩阵的题目就是一类典型的模拟过程题,需要精心设......
  • 算法金 | Transformer,一个神奇的算法模型!!
    大侠幸会,在下全网同名「算法金」0基础转AI上岸,多个算法赛Top「日更万日,让更多人享受智能乐趣」抱个拳,送个礼在现代自然语言处理(NLP)领域,Transformer模型的出现带来了革命性的变化。它极大地提升了语言模型的性能和效率,而自注意力机制是其中的核心组件。今个儿我们将......
  • [JLU] 数据结构与算法上机题解思路分享-第二次上机
    前言首先,请务必自己尽全力尝试实现题目,直接看成品代码,思维就被拘束了,也很容易被查重。这里只是思路解析的博客,代码仓库在JLU_Data_Structures_Record希望你能在这里找到你想要的:)正文A二叉树的创建与遍历分数10作者朱允刚单位吉林大学通过带空指针信息的先根序列(......
  • 代码随想录算法训练营第九天|232.用栈实现队列、225.用队列实现栈、 20.有效的括号、1
    文章目录232.用栈实现队列思路--直接模拟225.用队列实现栈解法一、两个队列模拟解法二、一个队列模拟20.有效的括号栈模拟1047.删除字符串中的所有相邻重复项解法一、栈解法二、双指针232.用栈实现队列题目链接:232.用栈实现队列-力扣(LeetCode)题目描述:请你仅......