K均值聚类(Kmeans)
Sigma = [1, 0; 0, 1];
mu1 = [1, -1];
x1 = mvnrnd(mu1, Sigma, 200);
mu2 = [5.5, -4.5];
x2 = mvnrnd(mu2, Sigma, 200);
mu3 = [1, 4];
x3 = mvnrnd(mu3, Sigma, 200);
mu4 = [6, 4.5];
x4 = mvnrnd(mu4, Sigma, 200);
mu5 = [9, 0.0];
x5 = mvnrnd(mu5, Sigma, 200);
% obtain the 1000 data points to be clustered
X = [x1; x2; x3; x4; x5];
% Show the data point
plot(x1(:,1), x1(:,2), 'r.'); hold on;
plot(x2(:,1), x2(:,2), 'b.');
plot(x3(:,1), x3(:,2), 'k.');
plot(x4(:,1), x4(:,2), 'g.');
plot(x5(:,1), x5(:,2), 'm.');
save myX %将X存储到文件中,在其他文件中load就可以了
结果如下:
% 初始聚类中心
mu0=[X(,:); X(,:);X(,:);X(,:);X(,:)];
mu1=zeros(,c);
lable=zeros(r,);
% first cluster
dist=zeros(,);
for k=:r
for n=:
dist(n)=norm(X(k,:)-mu0(n,:));
end
lable(k)=find(dist==min(dist));
end % X1=[lable X];
sum=zeros(,);
count=zeros(,); % 第一次聚类
for n=:
for k=:r
if lable(k)==n
sum(n,:)=sum(n,:)+X(k,:);
count(n)=count(n)+;
end
end
mu1(n,:)=sum(n,:)/count(n);
end % square error
e=zeros(,);
esum=;
for n=:
for k=:r
if lable(k)==n
e(n,:)=e(n,:)+norm(X(k,:)-mu1(n,:));
end
end
esum=esum+e(n,:);
end % ***************** start Iteration ************** countNotX=;% 到达一定值后,停止迭代
s=;
count1=zeros(,);
while true
s=s+;
%random choose X to update
ran=round(+*rand());%总共1000个样本
Xrand=X(ran,:);
rou=zeros(,);
rouMin=inf;
newClassLable=;
if count(lable(ran))~=
for n=:
if lable(ran)==n
rou(n)=norm(Xrand-mu1(n,:))*count(n)/(count(n)-);
else
rou(n)=norm(Xrand-mu1(n,:))*count(n)/(count(n)+);
end
if rou(n)<=rouMin;
rouMin=rou(n);
newClassLable=n;
end
end
if rouMin<rou(lable(ran))
countNotX=;
% new mu 这里用课件中的公式,不知道哪里错了,总是不行,就用最蠢的办法了
for n=:
for k=:r
if lable(k)==n
sum(n,:)=sum(n,:)+X(k,:);
count1(n)=count1(n)+;
end
end
mu1(n,:)=sum(n,:)/count1(n);
end
% new count
count(lable(ran))=count(lable(ran))-;
count(newClassLable)=count(newClassLable)+;
% new esum
e(lable(ran),:)=e(lable(ran),:)-rou(lable(ran));
e(newClassLable,:)=e(newClassLable,:)+rouMin;
esum=esum+rouMin-rou(lable(ran));
lable(ran)=newClassLable ;
else
% disp('No')
countNotX= countNotX+;
if countNotX==
%when J is not changed for times,reckon OK
break
end
end
end
end
K均值聚类(Kmeans)的更多相关文章
- 【转】算法杂货铺——k均值聚类(K-means)
k均值聚类(K-means) 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时 ...
- 第十篇:K均值聚类(KMeans)
前言 本文讲解如何使用R语言进行 KMeans 均值聚类分析,并以一个关于人口出生率死亡率的实例演示具体分析步骤. 聚类分析总体流程 1. 载入并了解数据集:2. 调用聚类函数进行聚类:3. 查看聚类 ...
- (ZT)算法杂货铺——k均值聚类(K-means)
https://www.cnblogs.com/leoo2sk/category/273456.html 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先 ...
- 机器学习之路:python k均值聚类 KMeans 手写数字
python3 学习使用api 使用了网上的数据集,我把他下载到了本地 可以到我的git中下载数据集: https://github.com/linyi0604/MachineLearning 代码: ...
- 吴裕雄 python 机器学习——K均值聚类KMeans模型
import numpy as np import matplotlib.pyplot as plt from sklearn import cluster from sklearn.metrics ...
- K均值聚类
聚类(cluster)与分类的不同之处在于, 分类算法训练过程中样本所属的分类是已知的属监督学习. 而聚类算法不需要带有分类的训练数据,而是根据样本特征的相似性将其分为几类,又称为无监督分类. K均值 ...
- 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例
k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定 ...
- Python实现kMeans(k均值聚类)
Python实现kMeans(k均值聚类) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=> ...
- 5-Spark高级数据分析-第五章 基于K均值聚类的网络流量异常检测
据我们所知,有‘已知的已知’,有些事,我们知道我们知道:我们也知道,有 ‘已知的未知’,也就是说,有些事,我们现在知道我们不知道.但是,同样存在‘不知的不知’——有些事,我们不知道我们不知道. 上一章 ...
- 机器学习理论与实战(十)K均值聚类和二分K均值聚类
接下来就要说下无监督机器学习方法,所谓无监督机器学习前面也说过,就是没有标签的情况,对样本数据进行聚类分析.关联性分析等.主要包括K均值聚类(K-means clustering)和关联分析,这两大类 ...
随机推荐
- Poj(3259),SPFA,判负环
题目链接:http://poj.org/problem?id=3259 Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submis ...
- zoj 3557 How Many Sets II
How Many Sets II Time Limit: 2 Seconds Memory Limit: 65536 KB Given a set S = {1, 2, ..., n}, n ...
- Failed to start component [StandardEngine[Catalina].StandardHost[localhost....
今天我用了近一天的时间研究一个错误,早上写代码是遇到一个 错误严重错误代码如下: 严重: ContainerBase.addChild: start: org.apache.catalina.Life ...
- linux--基础学习笔记--软件安装
- 2016 Al-Baath University Training Camp Contest-1 G
Description The forces of evil are about to disappear since our hero is now on top on the tower of e ...
- redis基本数据类型及方法
redis支持的数据类型 String redis最基本的类型,可以是任意类型的字符串,也可以是数字 SET 赋值,用法: SET key value GET 取值,用法: GET key INCR ...
- File Checksum Integrity Verifier
Microsoft (R) File Checksum Integrity Verifier V2.05 README file =================================== ...
- How To PLAY_SOUND in Oracle Forms
Play_sound is used to play audio files in Oracle Forms, Play_Sound plays the sound object in the spe ...
- ALV详解:OO SALV
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- XAF使用数据库访问层缓存的提升性能
很多时候,为了提升性能,我们可以给数据库访问层做缓存. 以下几步可以完成这个任务:1. 使用自定义的 XPObjectSpaceProvider1.1. 创建自定义的 XPObjectSpacePro ...