【Matlab】聚类方法_K-Means聚类

1.基本思想

K-Means聚类是一种无监督学习算法,其基本思想是将数据集划分为K个簇,每个簇内的样本点彼此之间的距离尽量小,而不同簇之间的距离尽量大。具体实现时,首先需要指定簇的数量K,然后在数据集中随机选择K个样本点作为初始的聚类中心,然后根据每个样本点到聚类中心的距离将其分配给离其最近的簇,再根据每个簇内的样本点计算新的聚类中心,直到簇的划分不再发生变化或达到最大迭代次数为止。K-Means聚类算法最终得到的结果是将数据集划分为K个簇,并且每个样本点都被分配到了其中一个簇中。

2.数据集介绍

鸢尾花(Iris)数据集是一个经典的数据集,用于机器学习和统计学习中的分类和聚类问题。该数据集包含了三种不同类型的鸢尾花(山鸢尾、变色鸢尾和维吉尼亚鸢尾)的测量数据,每种花各有50个样本。每个样本包含四个特征,即萼片长度、萼片宽度、花瓣长度和花瓣宽度,以及它所属的鸢尾花类型。

该数据集最早由英国统计学家和生物学家Ronald Fisher在1936年的一篇论文中介绍,并一直被广泛用于分类和聚类问题的研究中。由于其简单性和广泛应用性,鸢尾花数据集已成为了机器学习和统计学习中的标准数据集之一。

本文采用的数据是.xlsx格式,前四列为样本的特征值,最后一列为样本的标签,标签值为1,2,3

3.文件结构

在这里插入图片描述

iris.xlsx						% 鸢尾花数据集,具体格式参考第2部分
Main.m							% 主函数

4.详细代码及注释

% 清空变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行

% 读取数据
data = readtable('iris.xlsx');
X = table2array(data(:, 1:4));

% 设置 K-Means 参数
k = 3;  % 聚类数
max_iter = 100;  % 最大迭代次数

% 运行 K-Means
[idx, C] = kmeans(X, k, 'MaxIter', max_iter);

% 可视化聚类结果
figure
gscatter(X(:,1), X(:,2), idx)
hold on
plot(C(:,1), C(:,2), 'kx', 'MarkerSize', 15, 'LineWidth', 3)
legend({'Cluster 1', 'Cluster 2', 'Cluster 3', 'Cluster Centers'})
title('K-Means Clustering of Iris Dataset')
xlabel('Sepal Length')
ylabel('Sepal Width')

5.运行结果

在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

敲代码两年半的练习生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值