支持向量机模型预测相同的值

22日视图(30天)
约书亚Mineroff
约书亚Mineroff 2018年4月12日
回答: 阿洛克Nimrani 2018年5月23日
你好,我想用“fitrsvm”,但当我用模型来预测的值为一组新的数据,每一个得到相同的结果。我不知道为什么这是发生和任何帮助将不胜感激。这是完整的代码需要复制这个问题:
%的输入
P = (2.9610 2.1504 2.4248 - 2.3577 2.4761 - 2.2290 2.2205 - 2.5735);
V = (229.6794 177.1193 141.9000 - 286.2615 239.2910 - 135.1531 197.6062 - 166.0001);
α= 0 (1,8);
β= 0 (1,8);
i = 1:8
(α(我),β(i)) =克洛茨(P (i), V(我));
结束
X =(α,β)';
%响应
SfPas = (1.0000 2.2937 2.4360 - 1.0005 2.2176 - 1.9351 2.4653 - 2.9268);
%模型拟合
PasMdl = fitrsvm (X, SfPas ');
%的预测
V2 = (30.32, 20.48, 24.49, 19.56);%毫升
P2 = (2.5, 2.5, 2.5, 2.5) * 3;% kPa
alpha2 = 0 (1、4);
beta2 = 0 (1、4);
i = 1:4
[alpha2(我),beta2 (i)] =克洛茨(P2(我),V2(我));
结束
X2 = [alpha2; beta2] ';
SfPas2 =预测(PasMdl X2) '
函数(α,β)=克洛茨(P, V)
kPa2mmHg = 7.50061561303;
P = P * kPa2mmHg;%毫米汞柱
点= P;%毫米汞柱
Vm = V;%毫升
一个= 27.8;
Bn = 2.76;
V0 = Vm *(0.6 - 0.006 *点);
V30 = V0 + (Vm-V0) / ((Pm /) ^ (1 / Bn));
β= log10 (Pm / 30) / log10 (Vm / V30);
βα= 30 / (V30 ^);
结束

答案(1)

阿洛克Nimrani
阿洛克Nimrani 2018年5月23日
嗨,约书亚,
支持向量机使用内核和这些内核方法是基于距离。一个SVM假定它使用的数据是在标准范围内,通常要么是0到1,或1比1。结果,如果不按比例缩小的可比的特性范围,最大范围的特性将在内核矩阵的计算完全主宰。这似乎是原因为什么你没有得到预期的预测值,因为两个特点“α”和“beta”有不同的尺度上我们可以看到下面的图:
> >的情节(X,“线宽”3)
改善结果的一种方法是规范化、标准化数据的特性“X”之前,使用这些数据来训练支持向量机模型。这样做,你应该使用“标准化”参数标志与真正的价值作为一个名称-值对参数传递给函数“fitrsvm”如下:
> > PasMdl = fitrsvm (X, SfPas ',“标准化”,真正的);
更多的“标准化”标志的使用信息,请检查以下链接: //www.tianjin-qmedu.com/help/stats/fitrsvm.html busljl4-Standardize
使用一个例子,“标准化”标志可以在这里检查: //www.tianjin-qmedu.com/help/stats/fitrsvm.html buxgtub
或者,您可以自己正常化/标准化的数据作为数据预处理使用数据归一化函数“正常化”: //www.tianjin-qmedu.com/help/matlab/ref/normalize.html
希望这个有帮助。
谢谢。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!