k均值算法原理和优缺点

点击打开链接

定义

D=类内平均距离/类间平均距离

不同的K有不同的D,D越小越好,但k也不能过大,根据实际情况取。

数据集

96个维度的616条数据。

matlab代码

clc;clear
data=xlsread('C:\Users\Administrator\Desktop\数据.xlsx','Sheet1');
[n,p]=size(data);
for i=1:pminr=min(data(:,i));maxr=max(data(:,i));data(:,i)=(data(:,i)-minr)/(maxr-minr);%归一化
end
K=15;D=zeros(K-1,2);T=0;
for k=2:KT=T+1;
[lable,c,sumd,d]=kmeans(data,k);
%data,n*p原始数据向量
%lable,n*1向量,聚类结果标签;
%c,k*p向量,k个聚类质心的位置
%sumd,1*k向量,类间所有点与该类质心点距离之和
%d,n*k向量,每个点与聚类质心的距离
%-----求每类数量-----
sort_num=zeros(k,1);%每类数量
for i=1:kfor j=1:nif lable(j,1)==isort_num(i,1)=sort_num(i,1)+1;endend
end
%-----求每类数量-----
sort_ind=sumd./sort_num;%每类类内平均距离
sort_ind_ave=mean(sort_ind);%类内平均距离
%-----求类间平均距离-----
h=nchoosek(k,2);A=zeros(h,2);t=0;sort_outd=zeros(h,1);
for i=1:k-1for j=i+1:kt=t+1;A(t,1)=i;A(t,2)=j;end
end
for i=1:hfor j=1:psort_outd(i,1)=sort_outd(i,1)+(c(A(i,1),j)-c(A(i,2),j))^2;end
end
sort_outd_ave=mean(sort_outd);%类间平均距离
%-----求类间平均距离-----
D(T,1)=k;
D(T,2)=sort_ind_ave/sort_outd_ave;
end
min(D(:,2));
[f,g]=find(D==min(D(:,2)));
plot(D(:,1),D(:,2))

运行结果

横坐标为K,纵坐标为D,随着K的增加D虽然越来越小,但结合实际业务,K不能取太大,取5较好。

K取5的聚类matlab代码如下:

clc;clear;
k=5;%类数设置
data=xlsread('C:\Users\Administrator\Desktop\数据.xlsx','Sheet1');
[n,p]=size(data);
[lable,c,sumd,d]=kmeans(data,k);
%data,n*p原始数据向量
%lable,n*1向量,聚类结果标签;
%c,k*p向量,k个聚类质心的位置
%sumd,1*k向量,类间所有点与该类质心点距离之和
%d,n*k向量,每个点与聚类质心的距离
x=0:95;y=zeros(k,p);
for i=1:kt=0;for j=1:nif lable(j,1)==it=t+1;y(i,:)= y(i,:)+data(j,:);endendy(i,:)= y(i,:)/t;subplot(2,3,i);plot(x,y(i,:))end

聚类效果如下

如果对你有帮助,请点下赞,予人玫瑰手有余香!

时时仰望天空,理想就会离现实越来越近!

怎么确定K均值聚类中的K(基于matlab)相关推荐

  1. python实现k均值聚类(kMeans)基于numpy

    1.k均值聚类简介 k均值聚类是一种无监督学习方法,当数据量小,数据维度低时,具有简单.快速.方便的优点,但是当数据量较大时,其速度较慢,也容易陷入局部最优. 2. 步骤 和以前一样,kMeans聚类 ...

  2. 机器学习算法之 K 均值聚类

    机器学习算法之 K 均值聚类 本文我们来学习一下另一种经常听到的机器学习算法-- K 均值聚类. 这个名字确实跟"K 近邻"有些相像,但是要明确的是,"K 近邻" ...

  3. K均值聚类关于初始聚类中心的探讨(matlab程序)

    对应之前发过的:K均值聚类关于初始聚类中心的探讨,补发MATLAB的程序代码. matlab程序: 1. %利用传统K均值随机选取点聚类 clear all; close all; clc; %生成五 ...

  4. R语言聚类算法之k均值聚类(K-means)

    1.原理解析: 随机选取k(预设类别数)个样本作为起始中心点,将其余样本归入相似度最高中心点所在簇(cluster),再确立当前簇中样本坐标的均值为新的中心点,一次循环迭代下去,直至所有样本所属类别不 ...

  5. python机器学习案例系列教程——k均值聚类、k中心点聚类

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 上一篇我们学习了层次聚类.层次聚类只是迭代的把最相近的两个聚类匹配起来.并没有给出能给出多少的分组.今天我们来研究一个K均值聚类.就是 ...

  6. 机器学习之聚类算法:K均值聚类(一、算法原理)

    目录 一.Kmeans 二.Kmeans的流程 三.距离度量方式 3.1.闵可夫斯基距离 3.2.马哈拉诺比斯距离 3.3.其他 四.Kmeans聚类实例 五.Kmeans存在的问题 5.1.初始点的 ...

  7. K均值聚类的理解和实现

    目录 1. 距离的测度 1.1 欧式距离 1.2 马氏距离 1.2.1 利用马氏距离对数据进行归一化 1.2.2 利用马氏距离进行分类 2. K均值的基本理论 2.1 K均值的原理和实现 2.2 K均 ...

  8. 聚类之K均值聚类和EM算法

    这篇博客整理K均值聚类的内容,包括: 1.K均值聚类的原理: 2.初始类中心的选择和类别数K的确定: 3.K均值聚类和EM算法.高斯混合模型的关系. 一.K均值聚类的原理 K均值聚类(K-means) ...

  9. Spark数据挖掘-基于 K 均值聚类的网络流量异常检测(1): 数据探索、模型初探

    Spark数据挖掘-基于 K 均值聚类的网络流量异常检测(1): 数据探索.模型初探 1 前言 分类和回归是强大易学的机器学习技术.需要注意的是:为了对新的样本预测未知的值, 必须从大量已知目标值的样 ...

最新文章

  1. Citrix通用打印服务器配置
  2. 为什么Java进程使用的RAM比Heap Size大?
  3. bootstrap模态框使用
  4. python编写ftp客户端_用Python写FTP客户端程序
  5. 【转】__declspec用法详解
  6. 计算机网络(七)-物理层设备
  7. 怎样在ArcIMS 上实现专题图
  8. sqlplus下无法shutdown情况下不妨试试crsctl stop crs
  9. 一个基于 SpringBoot2+redis+Vue 的商城管理系统,拼团、砍价、秒杀等都有,可二次开发接私活!...
  10. homebrew安装及常用命令
  11. adlicensegen怎么生成许可_国家排污许可证申请系统常见问题及解决办法
  12. SqlMap常用命令
  13. 《娱乐至死》读书笔记(part2)--到处是水却没有一滴水可以喝
  14. 深入浅出强化学习:原理入门(待更新)
  15. SQLyog 新建mysql链接时 错误号码 2058
  16. 【Python,迄今为止讲解的最详细的一篇
  17. 关于js中获取div中的数据
  18. java.lang.NoSuchMethodException: com.cbb.qqzone.pojo.Topic.<init>(java.lang.Integer)
  19. word中四号字体对应于14pt,其他字号如下
  20. python 儿童 游戏_python程序:两个小孩玩剪刀石头布游戏,一人十分,赢一次得一分,输一次减一分,平手不扣分,当没...

热门文章

  1. ROS2可视化利器---Foxglove Studio
  2. 大学十年__献给计算机专业的所有学子
  3. 腾讯云HiFlow场景连接器
  4. BIEE 11g 安装
  5. java【猴子吃桃问题】
  6. elf文件从原理到实现个人总结
  7. VS开发Qt应用时遇到“找不到VCRUNTIME140D_APP.dIl,无法继续执行代码”的错误
  8. ubuntu20.04开机后出现 /dev/sdb3 xxx files xxxx/xxxxx blocked,无法进入桌面问题
  9. Bluetooth 蓝牙介绍(四):低功耗蓝牙BLE Mesh网络 Ⅰ—— 基础概念
  10. leetcode(力扣) 39. 组合总和(回溯 剪枝)