怎么确定K均值聚类中的K(基于matlab)
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)相关推荐
- python实现k均值聚类(kMeans)基于numpy
1.k均值聚类简介 k均值聚类是一种无监督学习方法,当数据量小,数据维度低时,具有简单.快速.方便的优点,但是当数据量较大时,其速度较慢,也容易陷入局部最优. 2. 步骤 和以前一样,kMeans聚类 ...
- 机器学习算法之 K 均值聚类
机器学习算法之 K 均值聚类 本文我们来学习一下另一种经常听到的机器学习算法-- K 均值聚类. 这个名字确实跟"K 近邻"有些相像,但是要明确的是,"K 近邻" ...
- K均值聚类关于初始聚类中心的探讨(matlab程序)
对应之前发过的:K均值聚类关于初始聚类中心的探讨,补发MATLAB的程序代码. matlab程序: 1. %利用传统K均值随机选取点聚类 clear all; close all; clc; %生成五 ...
- R语言聚类算法之k均值聚类(K-means)
1.原理解析: 随机选取k(预设类别数)个样本作为起始中心点,将其余样本归入相似度最高中心点所在簇(cluster),再确立当前簇中样本坐标的均值为新的中心点,一次循环迭代下去,直至所有样本所属类别不 ...
- python机器学习案例系列教程——k均值聚类、k中心点聚类
全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 上一篇我们学习了层次聚类.层次聚类只是迭代的把最相近的两个聚类匹配起来.并没有给出能给出多少的分组.今天我们来研究一个K均值聚类.就是 ...
- 机器学习之聚类算法:K均值聚类(一、算法原理)
目录 一.Kmeans 二.Kmeans的流程 三.距离度量方式 3.1.闵可夫斯基距离 3.2.马哈拉诺比斯距离 3.3.其他 四.Kmeans聚类实例 五.Kmeans存在的问题 5.1.初始点的 ...
- K均值聚类的理解和实现
目录 1. 距离的测度 1.1 欧式距离 1.2 马氏距离 1.2.1 利用马氏距离对数据进行归一化 1.2.2 利用马氏距离进行分类 2. K均值的基本理论 2.1 K均值的原理和实现 2.2 K均 ...
- 聚类之K均值聚类和EM算法
这篇博客整理K均值聚类的内容,包括: 1.K均值聚类的原理: 2.初始类中心的选择和类别数K的确定: 3.K均值聚类和EM算法.高斯混合模型的关系. 一.K均值聚类的原理 K均值聚类(K-means) ...
- Spark数据挖掘-基于 K 均值聚类的网络流量异常检测(1): 数据探索、模型初探
Spark数据挖掘-基于 K 均值聚类的网络流量异常检测(1): 数据探索.模型初探 1 前言 分类和回归是强大易学的机器学习技术.需要注意的是:为了对新的样本预测未知的值, 必须从大量已知目标值的样 ...
最新文章
- Citrix通用打印服务器配置
- 为什么Java进程使用的RAM比Heap Size大?
- bootstrap模态框使用
- python编写ftp客户端_用Python写FTP客户端程序
- 【转】__declspec用法详解
- 计算机网络(七)-物理层设备
- 怎样在ArcIMS 上实现专题图
- sqlplus下无法shutdown情况下不妨试试crsctl stop crs
- 一个基于 SpringBoot2+redis+Vue 的商城管理系统,拼团、砍价、秒杀等都有,可二次开发接私活!...
- homebrew安装及常用命令
- adlicensegen怎么生成许可_国家排污许可证申请系统常见问题及解决办法
- SqlMap常用命令
- 《娱乐至死》读书笔记(part2)--到处是水却没有一滴水可以喝
- 深入浅出强化学习:原理入门(待更新)
- SQLyog 新建mysql链接时 错误号码 2058
- 【Python,迄今为止讲解的最详细的一篇
- 关于js中获取div中的数据
- java.lang.NoSuchMethodException: com.cbb.qqzone.pojo.Topic.<init>(java.lang.Integer)
- word中四号字体对应于14pt,其他字号如下
- python 儿童 游戏_python程序:两个小孩玩剪刀石头布游戏,一人十分,赢一次得一分,输一次减一分,平手不扣分,当没...
热门文章
- ROS2可视化利器---Foxglove Studio
- 大学十年__献给计算机专业的所有学子
- 腾讯云HiFlow场景连接器
- BIEE 11g 安装
- java【猴子吃桃问题】
- elf文件从原理到实现个人总结
- VS开发Qt应用时遇到“找不到VCRUNTIME140D_APP.dIl,无法继续执行代码”的错误
- ubuntu20.04开机后出现 /dev/sdb3 xxx files xxxx/xxxxx blocked,无法进入桌面问题
- Bluetooth 蓝牙介绍(四):低功耗蓝牙BLE Mesh网络 Ⅰ—— 基础概念
- leetcode(力扣) 39. 组合总和(回溯 剪枝)