基于K-Means聚类分析的鸢尾花分类

基于K-Means聚类分析的鸢尾花分类 一、聚类分析定义1.1 核心定义聚类分析是无监督机器学习的核心算法无需人工标注数据标签仅根据数据自身的特征相似性距离、密度、相关性等将数据集自动划分为若干个簇类别。核心准则簇内样本相似度最大化簇间样本相似度最小化物以类聚。1.2 关键特点无监督学习不需要数据标签纯依靠数据特征自动分组应用广泛数据挖掘、用户分群、图像分割、模式识别、异常检测结果直观自动将数据分为指定数量的类别可视化效果清晰。1.3 K-Means算法K-Means 聚类最简单、最常用的聚类算法,是初学者最容易掌握的算法。确定超参数 K预先设定要分成多少类初始化 K 个质心随机从数据里选 K 个样本作为初始中心点改进K-Means 优化初始点避免局部最优分配样本E 步期望遍历全部样本计算每个样本到 K 个质心的距离将样本划分到距离最近的质心所属簇更新质心M 步最大化对每个簇用簇内所有样本各维度平均值生成新的簇中心收敛判断重复 3、4 两步迭代直到满足停止条件其一 1质心位置不再发生变化 2SSE 下降幅度小于设定阈值 3达到最大迭代次数。二、MATLAB 实例 1经典数值数据聚类鸢尾花数据集2.1 数据集说明MATLAB 自带fisheriris鸢尾花数据集总样本150 个3 种鸢尾花真实标签用于验证特征维度4 个花萼长 / 宽、花瓣长 / 宽本文提取花瓣长 宽 2 个特征可视化效果最优。2.2 完整代码clear; clc; close all; % 清空工作区、命令行、关闭图形窗口load fisheriris; % 加载鸢尾花数据集MATLAB内置无需外部文件X meas(:,3:4); % 提取特征花瓣长度、花瓣宽度2维数据方便绘图k 3; % 设定聚类数量为3[idx, C] kmeans(X, k); % idx每个样本的聚类标签1/2/3 % C3个聚类中心的坐标矩阵 %% 绘制聚类结果图figure(Name,K-Means三分类聚类结果);scatter(X(idx1,1), X(idx1,2), 80, r, filled);hold on;scatter(X(idx2,1), X(idx2,2), 80, g, filled);hold on; scatter(X(idx3,1), X(idx3,2), 80, b, filled);hold on; % 绘制聚类中心黑色五角星scatter(C(:,1), C(:,2), 200, k, p, LineWidth,2);%% 图表标注xlabel(花瓣长度cm);ylabel(花瓣宽度cm);title(鸢尾花数据集 K-Means三分类聚类结果);legend(类别1,类别2,类别3,聚类中心,Location,best);grid on;%% 聚类效果评估score mean(silhouette(X, idx));fprintf(聚类轮廓系数 %.4f\n, score);%% 真实标签对比图figure(Name,真实分类结果);gscatter(X(:,1), X(:,2), species, rgb, o, 20);xlabel(花瓣长度cm);ylabel(花瓣宽度cm);title(鸢尾花数据集 真实3分类结果);legend(山鸢尾,变色鸢尾,维吉尼亚鸢尾);grid on;2.3 程序的主要运行结果撰写博客不易如果你觉得本文对自己的学习和研究有所帮助请点赞和关注欢迎转发感谢大家支持