我想在SVM分类器中获得超平面公式,
所以我可以根据超平面的距离来计算每个样本的真实分类概率。
为简单起见,想象一下MATLAB自己的例子,
load fisheriris
xdata = meas(51:end,3:4);
group = species(51:end);
svmStruct = svmtrain(xdata,group,'showplot',true);
由此给出,
超平面是一条线,我想要那个公式。
超平面也可能有凌乱的形状!
我该怎么办?也许还有其他方法。
感谢您的帮助。
答案 0 :(得分:2)
从 svmStruct
更轻松地阅读 svmtrain
与 "AUTOSCALE"
, false
:
svmStruct.SupportVectors
svmStruct =
SupportVectors: [3x2 double]
Alpha: [3x1 double]
Bias: -23.1428
KernelFunction: @linear_kernel
KernelFunctionArgs: {}
GroupNames: [150x1 logical]
SupportVectorIndices: [3x1 double]
ScaleData: []
FigureHandles: {[170.0012] [171.0052 172.0018] [225.0018]}
ans =
5.5000 3.5000
4.5000 2.3000
4.9000 2.5000
或
>> data( svmStruct.SupportVectorIndices,: )
ans =
5.5000 3.5000
4.5000 2.3000
4.9000 2.5000
如果您使用默认的“ autoscale
”选项,那么您需要使用像这样丑陋的东西来展开缩放:
( data( svmStruct.SupportVectorIndices( 1 ),: )
+ svmStruct.ScaleData.shift
).* svmStruct.ScaleData.scaleFactor
(>>> https://www.mathworks.com/matlabcentral/newsreader/view_thread/249055)
要从SVM分类器内部数据构建分离超平面,您可能对>>>感兴趣http://scikit-learn.org/stable/auto_examples/svm/plot_separating_hyperplane.html
使用带有线性内核的支持向量机分类器在两类可分离数据集中绘制分离超平面的最大边距的参数