我在Matlab中进行数据分析,我有三个不同类别的数据点:(无伤害,小伤害和高伤害)。这些类由整数值(1,2,3)表示。
我通过使用正则化线性回归来预测这些类,我想创建一个图片,其中我用颜色突出显示数据点:1 =绿色,2 =黄色,3 =红色。这对我来说没问题,但我还想创建一个次要图片,我用回归模型预测了这些类。问题是我的回归模型没有给出整数值而是实数值(我可以通过将值四舍五入到最接近的整数来克服这个问题,但我不想;)
我想要做的是:将实际值(比如1.45)映射到RGB代码中,该代码对应于绿色 - 黄色 - 红色范围内的颜色。
让我举个例子:
如果我的模型的预测值是1.45,那么相应的颜色代码将落在绿色 - 黄色之间。
如果我的预测值是2.5,那么颜色代码将介于黄色 - 红色之间。
因此,值越接近1,颜色代码越接近绿色,值越接近2,颜色代码越接近黄色,值越接近3,颜色越接近颜色代码是红色的。
我只想在预测图片中找到像greeb,yellow,orange,red这样的颜色=)
希望我的问题很清楚=)有什么好主意吗? =)
如果我的问题不清楚,请告诉我=)
答案 0 :(得分:1)
您可以轻松创建自己的色彩映射,只需使用颜色定义Nx3矩阵即可。让我向您展示一个示例代码,其中包含您提出的地图。
clear;clc;
% Prepare example data rage 1-3
Z=peaks;
Z=peaks./max(Z(:));
Z=(Z+1)*3/2;
%Define colormap
c1=[0 1 0]; %G
c2=[1 1 0]; %Y
c3=[1 0 0]; %R
n1=20;
n2=20;
cmap=[linspace(c1(1),c2(1),n1);linspace(c1(2),c2(2),n1);linspace(c1(3),c2(3),n1)];
cmap(:,end+1:end+n2)=[linspace(c2(1),c3(1),n2);linspace(c2(2),c3(2),n2);linspace(c2(3),c3(3),n2)];
colormap(cmap')
%Plot
surf(Z)
colorbar
caxis([1 3])
结果:(注意,您可能希望添加更多n2
值,以便红色更明显。