【MATLAB例程】K-Means 聚类的代码例程,带数据生成、聚类计算、结果显示、误差输出等,附运行截图

在这里插入图片描述

本文所述的MATLAB代码实现了完整的K-Means聚类算法演示,适用于数据聚类学习、算法验证。代码通过模拟数据生成、聚类分析、结果可视化及误差评估,直观展示了K-Means的工作原理和性能。

程序简介

代码核心功能

  1. 数据生成

    • 创建4个高斯分布簇(共200个样本点)
    • 每个簇具有不同中心点 [3,3], [-3,3], [3,-3], [-3,-3] 和标准差
    • 数据合并后随机打乱顺序,模拟真实数据集
  2. K-Means聚类

    • 使用MATLAB内置 kmeans() 函数执行聚类
    • 关键参数:
      • k=4(指定簇数量)
      • MaxIter=100(最大迭代次数)
      • Replicates=5(重复聚类取最优解)
    • 输出聚类标签、质心坐标、簇内误差
  3. 可视化分析

    • 聚类结果图:散点着色区分簇,黑色"X"标记质心
    • 误差收敛图:展示迭代过程中总误差的下降过程
    • 数据分布对比
      • 原始数据分布(相同颜色)
      • 真实标签分布(不同符号区分)
      • 聚类结果与真实标签对比图
  4. 量化评估

    • 计算并输出:
      • 总误差:totalError = sum(sumd)
      • 各簇内距离误差:disp(sumd)

关键特性

  • 可复现性:通过 rng() 固定随机种子
  • 抗局部最优Replicates 参数多次运行取最优解
  • 直观验证:可视化对比人工生成数据与聚类结果
  • 算法诊断:误差收敛曲线验证迭代优化效果

运行结果

原始数据:
在这里插入图片描述
分类结果:
在这里插入图片描述
结果输出:
在这里插入图片描述

matlab代码

程序结构

在这里插入图片描述

部分代码

% K-Means 聚类 MATLAB 示例代码
clc; clear; close all;
rng(0);
%%  生成随机数据
% 数据点数
numPoints = 200;

% 随机生成 4 个簇的数据
rng(1); % 设置随机种子以便复现
data1 = 3*randn(numPoints/4, 2) + [3, 3];
data2 = 2*randn(numPoints/4, 2) + [-3, 3];
data3 = randn(numPoints/4, 2) + [3, -3];
data4 = randn(numPoints/4, 2) + [-3, -3];

% 合并数据
data = [data1; data2; data3; data4];

% 打乱数据顺序
data = data(randperm(size(data, 1)), :);

完整代码获取

如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MATLAB卡尔曼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值