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)的更多相关文章

  1. 【转】算法杂货铺——k均值聚类(K-means)

    k均值聚类(K-means) 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时 ...

  2. 第十篇:K均值聚类(KMeans)

    前言 本文讲解如何使用R语言进行 KMeans 均值聚类分析,并以一个关于人口出生率死亡率的实例演示具体分析步骤. 聚类分析总体流程 1. 载入并了解数据集:2. 调用聚类函数进行聚类:3. 查看聚类 ...

  3. (ZT)算法杂货铺——k均值聚类(K-means)

    https://www.cnblogs.com/leoo2sk/category/273456.html 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先 ...

  4. 机器学习之路:python k均值聚类 KMeans 手写数字

    python3 学习使用api 使用了网上的数据集,我把他下载到了本地 可以到我的git中下载数据集: https://github.com/linyi0604/MachineLearning 代码: ...

  5. 吴裕雄 python 机器学习——K均值聚类KMeans模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import cluster from sklearn.metrics ...

  6. K均值聚类

    聚类(cluster)与分类的不同之处在于, 分类算法训练过程中样本所属的分类是已知的属监督学习. 而聚类算法不需要带有分类的训练数据,而是根据样本特征的相似性将其分为几类,又称为无监督分类. K均值 ...

  7. 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例

    k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定 ...

  8. Python实现kMeans(k均值聚类)

    Python实现kMeans(k均值聚类) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=> ...

  9. 5-Spark高级数据分析-第五章 基于K均值聚类的网络流量异常检测

    据我们所知,有‘已知的已知’,有些事,我们知道我们知道:我们也知道,有 ‘已知的未知’,也就是说,有些事,我们现在知道我们不知道.但是,同样存在‘不知的不知’——有些事,我们不知道我们不知道. 上一章 ...

  10. 机器学习理论与实战(十)K均值聚类和二分K均值聚类

    接下来就要说下无监督机器学习方法,所谓无监督机器学习前面也说过,就是没有标签的情况,对样本数据进行聚类分析.关联性分析等.主要包括K均值聚类(K-means clustering)和关联分析,这两大类 ...

随机推荐

  1. WinFormd多窗体 菜单和工具栏:

    一.多窗体 1.哪个是主窗体 主窗体就是如果关掉这个窗体,程序就会退出的那个窗体1问题:主窗体隐藏了,关闭其它窗体后,没有将主窗体显示/关闭,那么程序就关不上了 办法:构造函数传值,将窗体传到另一个窗 ...

  2. java实现按拼音排序名称

    private static String[] nameArray = {"张三","李四","王二","付火"}; @ ...

  3. Mac 下Cordova开发

    一 Cordova开发环境搭建 1,安装node.js环境 官网: http://nodejs.org/  下载包安装 2,使用命令行安装 cordova 主要命令: 安装Cordova: sudo ...

  4. 优化Linux生产服务器的经验之谈

    [51CTO独家特稿]如何优化自己的Linux生产服务器?本文结合实际的工作经验,总结了优化Linux生产服务器的九大要点.如果有些方法您尚未采用,不妨一试. 一.时间同步 生产环境下的服务器对时间的 ...

  5. ASP.NET简单登录注册实例

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...

  6. Mysql ERROR 1064 (42000)

    创建了一个表: +-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null ...

  7. Mysql错误问题记录

    ① Incorrect string value: '\xE6\x94\xBE\xE5\xA4\xA7...' for column 'name' at row 1 Query…… 原因:编码不匹配. ...

  8. 统计fastq文件中读段的数量

    mycount=`cat SRR108114_new_1.fastq | wc -l` echo 'Number of clean reads, SRR108114_new_1.fastq: '$(( ...

  9. LINQ 简单用法【1】

    LINQ:Language INtegrated Query,语言集成查询. 以下内容演示如何利用LINQ进行增加,修改,删除和查询操作,针对数据库. 首先创建Linq Class. 添加数据库信息, ...

  10. centos vpn

    yum install ppp -y cd /usr/local/src wget http://dl.fedoraproject.org/pub/epel/7/x86_64/p/pptpd-1.4. ...