- 214
- 0
- 约8.28千字
- 约 25页
- 2017-12-03 发布于河北
- 举报
《 —人工智能方向实习—》实 习 报 告专业: 计算机科学与技术 班级: 学号: 姓名: 江苏科技大学计算机学院2016年 3 月 实验一 数据聚类分析一、实验目的编程实现数据聚类的算法。二、实验内容 k-means聚类算法。三、实验原理方法和手段 k-means算法接受参数k ;然后将事先输入的n个数据对象划分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高.四、实验条件 Matlab2014b五、实验步骤初始化k个聚类中心。计算数据集各数据到中心的距离,选取到中心距离最短的为该数据所属类别。计算(2)分类后,k个类别的中心(即求聚类平均距离)继续执行(2)(3)直到k个聚类中心不再变化(或者数据集所属类别不再变化)六、实验代码%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% main.m% k-means algorithm% @author matcloud%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear;close all;load fisheriris;X = [meas(:,3) meas(:,4)];figure;plot(X(:,1),X(:,2),ko,MarkerSize,4);title(fisheriris dataset,FontSize,18,Color,red); [idx,ctrs] = kmeans(X,3);figure;subplot(1,2,1);plot(X(idx==1,1),X(idx==1,2),ro,MarkerSize,4);hold on;plot(X(idx==2,1),X(idx==2,2),go,MarkerSize,4);hold on;plot(X(idx==3,1),X(idx==3,2),bo,MarkerSize,4);hold on;plot(ctrs(:,1),ctrs(:,2),kx,MarkerSize,12);title(official kmeans,FontSize,16,Color,red); [idx,ctrs] = my_kmeans(X,3);subplot(1,2,2);plot(X(idx==1,1),X(idx==1,2),ro,MarkerSize,4);hold on;plot(X(idx==2,1),X(idx==2,2),go,MarkerSize,4);hold on;plot(X(idx==3,1),X(idx==3,2),bo,MarkerSize,4);hold on;plot(ctrs(:,1),ctrs(:,2),kx,MarkerSize,12);title(custom kmeans,FontSize,16,Color,red);function [idx,ctrs] = my_kmeans(m,k) [row col] = size(m); %init k centroids p = randperm(size(m,1)); for i = 1 : k ctrs(i,:) = m(p(i),:); end idx = zeros(row,1);%idex is pointer of group while 1 d = dist2matrix(m,ctrs); [z,g] = min(d,[],2); if(g == idx) break; else idx = g; end %update ctroids for i = 1 : k v = find(g == i); if v ctrs(i,:) = mean(m(v,:),1); end end endendfunction [idx,ctrs] = my_kmeans(m,k) [row col] = size(m); %init k centroids p = randperm(size(m,1)); for i = 1 : k ctrs(i,:) = m(p(i),:); end idx = zeros(row,1);%idex is pointer of group while 1 d = dist2matrix(m,ctrs); [z,g] = min(d,[],2); if(g == idx) break; else idx = g; end %update ctroids for i = 1 : k v = find(g == i); if v ctrs(i,:) = mean(m(v,:),1); end end endend七、实验结果图1-1 未聚类数据图1-2 聚类后实验分析算法的时间复杂度上界为O
原创力文档

文档评论(0)