Gscatter为3个变量

Riz*_*Riz 2 matlab classification

我正致力于判别分析,并希望使用MATLAB对一些数据进行分类.在MATLAB中给出的Fisher's Iris Data示例中(详情请访问www.mathworks.com/products/demos/statistics/classdemo.html),他们只考虑前2个变量(Sepal Length&Width).我想继续进行具有更多功能的分类,如花瓣长度和花瓣宽度.

此外,MATLAB函数gscatter似乎只需要2个变量.

gscatter(meas(:,1), meas(:,2), species,'rgb','osd');

我想包括meas(:,3)并继续.请帮助我.谢谢

ray*_*ica 5

你不能这样做,gscatter因为它只绘制2D数据.如果要对3D数据执行此操作(因为包含其他维度),请考虑使用plot33D绘制数据.但是,gscatter您可以指定每个组的颜色以及每个点的标记.我们仍然可以这样做,plot3但它需要更多的工作.产生一个新的空白figure,使用hold on,然后使用循环以不同的颜色和标记一次一个地绘制属于特定类别的所有数据.

我们首先要做的是获取分类数据species并为每个类别分配一个唯一的ID,以便我们可以分离出正确的数据来绘制.因此,尝试这样做:

load fisheriris; %// The data that you are referring to
[~,~,id] = unique(species);
colors = 'rgb';
markers = 'osd';

for idx = 1 : 3
    data = meas(id == idx,:);
    plot3(data(:,1), data(:,2), data(:,3), [colors(idx) markers(idx)]);
    hold on;
end
grid; %// Show a grid
Run Code Online (Sandbox Code Playgroud)

我们慢慢来看看代码吧. load fisheriris像你提到的那样加载Fisher Iris数据.下一行用于unique遍历species数组并为每个字符串分配唯一的ID.我们需要这个数组来分离存储在meas每个类别中的数据,这样我们就可以使用不同的颜色和标记在图表上绘制这些数据.我声明了两个字符串数组,它们将存储每个标记的颜色以及标记.现在,我们创建一个循环,将为每个唯一标签分离数据,使用绘制此数据plot3,然后使用相应的颜色和标记标记每个点.您需要使用,hold on以便我们可以在同一图表中绘制多个点集.不这样做会在每次打电话时清除图表plot3并且仅绘制最近添加的点数.作为奖励,我们添加一个,grid以便我们可以更好地看到图表.


这就是我们得到的:

在此输入图像描述