K-means聚类分析探究

本文深入探讨了K-means聚类分析的原理,这是一种无监督学习方法,用于将数据集划分成若干个紧密的簇。MATLAB提供了内置的kmeans函数,支持多种参数设置以优化聚类效果。此外,还分享了一段简单的K-means算法实现代码,以助于理解和应用。
摘要由CSDN通过智能技术生成

K-means聚类分析探究

1、K-means聚类分析原理
对于聚类分析,是在数据中发现数据对象之间的关系,将数据进行分组,组内的相似性越大,组间的差别越大,则聚类效果越好。
K-means算法的思想很简单,对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。K-means算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛。

2、MATLAB中提供了对于K-means聚类分析的函数
(1)语法
idx = kmeans(X,k)
idx = kmeans(X,k,Name,Value)
[idx,C] = kmeans( )
[idx,C,sumd] = kmeans( )
[idx,C,sumd,D] = kmeans( )

(2)说明
idx = kmeans(X,k)执行k-means聚类,将n-by-p数据矩阵X的观测数据划分为k个簇,并返回一个包含每个观测数据的簇索引的n-by-1向量(idx)。X的行对应点,列对应变量。默认情况下,kmeans使用平方欧氏距离度量和k-mean++算法初始化集群中心。
idx = kmeans(X,k,Name,Value)返回带有由一个或多个Name,Value对参数指定的附加选项的集群索引。例如,指定余弦距离、使用新初始值重复聚类的次数或使用并行计算的次数。
[idx,C] = kmeans( )返回k-by-p矩阵C中的k个质心位置。
[idx,C,sumd] = kmeans( )返回k-by-1向量sumd中点到质心距离的簇内和。
[idx,C,sumd,D] = kmeans( )返回n × k矩阵D中每个点到每个质心的距离。

(3)例子
例子在matlab帮助菜单中可以很方便地找到,便于学习,在此不再举例。

3、K-means代码共同学习

function [Idx, Center] = K_means(X, xstart)
len = length(X);        
Idx = zeros(len, 1);    

C1 = xstart(1,:);       
C2 = xstart(2,:);      
C3 = xstart(3,:);       

for i_for = 1:100
    for i = 1:len
        x_temp = X(i,:);    
        d1 = norm(x_temp - C1);    
        d2 = norm(x_temp - C2);    
        d3 = norm(x_temp - C3);    
        d = [d1;d2;d3];
        [~, id] = min(d);   
        Idx(i) = id;
    end
    
 
    L1 = X(Idx == 1,:);    
    L2 = X(Idx == 2,:);     
    L3 = X(Idx == 3,:);    
    C1 = mean(L1);     
    C2 = mean(L2);      
    C3 = mean(L3);     
end
Center = [C1; C2; C3]; 

K-means数据

手机扫一扫,获取更多MATLAB实用技能~

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IGSzt

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

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

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

打赏作者

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

抵扣说明:

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

余额充值