K均值聚类

%%%%%%% 对给定的二维点集,利用Kmeans方法进行聚类 clc, clear all, close all %% 1.数据导入 %%%构造一组数据,其分类数目从直观上比较明显 mu1 = [1 1]; Sigma1 = [0.5 0; 0 0.5]; mu2 = [3 3]; Sigma2 = [0.2 0; 0 0.2]; % rng(1); %%% 加了rng(1),使得每次运行程序时,种子固定,产生的随机数是一样的,绘出的图形是一样的 X = [mvnrnd(mu1,Sigma1,1000);mvnrnd(mu2,Sigma2,1000)]; %%%%%产生高斯分布数据。X是一个2000*2的矩阵,表示2000个二维点 %%%绘图示意 plot(X(:,1),X(:,2),'ko') title('Scatter Plot') xlim([min(X(:)) max(X(:))]) % Make axes have the same scale ylim([min(X(:)) max(X(:))]) %% 2.聚类 e=0.01; %%%若聚类中心在迭代前后变化小于e,则跳出循环 iter = 1000; %%%最大迭代次数 [n,~]=size(X);%%%得到x的行数,即样本或向量的个数n idx = zeros(n,1); %%%Idx(i)表示第i个点的类别,值为1或者2 temp=randperm(n,2);%%%产生2个n以内的随机整数 clusters=[X(temp(1),:);X(temp(2),:)] %%%在样本中随机取两点作为初始的两个聚类中心 new_clusters=zeros(2,2); %%%%迭代中的聚类中心,先设为0矩阵 %% 请在下述两行注释之间填写代码,针对给出的平面点集,把它们分为两类 m=2; s=1; D = zeros(2,n); v1=clusters(1,:); v2=clusters(2,:); V1 = zeros(2,1000); V2 = zeros(2,1000); V1(:,2) = v1; V2(:,2) = v2; while(abs(V1(1,s) - V1(1,s+1)) > e || abs(V1(2,s) - V1(2,s+1) > e || abs(V2(1,s) - V2(1,s+1)) > e || abs(V2(2,s) - V2(2,s+1)) > e)||s
上一篇:STL empty由于size


下一篇:Kaggle酒推荐,winemag-data-130k-v2.csv