我一直在使用matlab,我已经设法用两个数据集绘制kmean集群,现在我想做同样但有三个数据集。我是否需要为三个数据集创建三维绘图,或者可以正常绘制它 这就是我为三个数据集所做的工作
Array=csvread('test.csv');
dataset = Array(:,[1:3]);
col1 = Array(:, 1);
col2 = Array(:, 2);
col3 = Array(:, 3);
%dataset [mean+std.deviation *column];
data1 = [3721.17+3872.307*col1];
data2 = [3218.28+4754.122*col2];
data3 = [1541.93+3783.942*col3];
mydata = [data1, data2 ,data3];
[idx,C] = kmeans(data,3,'Distance','cityblock',...
'Options',optns);
我不确定绘制三个数据集kmean集群的最佳方法是什么?我只能使用'plot'或者如果我在3d plot中表示它会更好 以及如何为三个数据集创建三维图
答案 0 :(得分:0)
我使用以下代码来估算您的情况。请注意,对代码的调用使用mydata
,而不是代码中使用的data
,因为没有名为data
的变量。
Array=rand(100,3);
dataset = Array(:,[1:3]);
col1 = Array(:, 1);
col2 = Array(:, 2);
col3 = Array(:, 3);
%dataset [mean+std.deviation *column];
data1 = [3721.17+3872.307*col1];
data2 = [3218.28+4754.122*col2];
data3 = [1541.93+3783.942*col3];
mydata = [data1, data2 ,data3];
[idx,C] = kmeans(mydata,3,'Distance','cityblock');
然后用3d绘制,用k-means分隔颜色代码,使用scatter3
函数。
scatter3(data1,data2,data3,[],idx,'filled');
或
scatter3(mydata(:,1),mydata(:,2),mydata(:,3),[],idx,'filled');
在第5个输入参数中使用idx将根据它们从kmeans的输出中分组的方式对散点图进行颜色编码。