支持向量机分类不同的内核

11视图(30天)
caterina
caterina 2012年12月27日
评论道: 杰里米Huard 2023年1月31日
我使用一个支持向量机(SVM_train生物信息工具箱)分类数据,我想我最后的训练与不同的核函数支持向量机模型。我不懂如何指定自己的内核映射:如果我想用柯西内核定义为
k = 1 / (1 + (| uv | ^ 2 /σ))
在u, v的向量X数据,σ是由用户定义的参数(σ= 2.5)。我必须编辑这个matlab语句如何?
svmStruct = svmtrain (X,集团‘Kernel_Function’,‘rbf’,‘RBF_Sigma’, 2.5,“方法”,“QP”);
谢谢你!
1评论
杰里米Huard
杰里米Huard 2023年1月31日
用户使用R2014b或更新应该使用 fitcsvm 看到下面成了函数和二元分类或 fitcecoc 对多类分类。
你可以指定一个自定义内核函数通过添加“ myfunction KernelFunction ', ' ' 名称-值对, myfunction 是你的名字包含内核函数定义的函数。

登录置评。

答案(4)


caterina
caterina 2012年12月28日
嗨Ilya传递谢谢你们的回答。我读线程在写作和我还是不了解我的代码是错误的。我创建了我的内核代码保存在一个文件夹“pgm_qkda”。你可以找到下面的代码
清晰的所有
clc;
目录' /用户/文件/相似/共享/ D / KQDA / matlab2 / pgm_qda”);
x = [3 3 4 5 6 7 8 0.1 - 0.2
3 4 5 7 7 5 0.5 - 0.6
7 7 2 3 3 4 5 0.4 - 0.5
3 2 3 4 5 6 6 0.2 - 0.3);
组= [1,1、2、2]”;
p1 = 2.5;
svmStruct = svmtrain (x、组“Kernel_Function”@ (u, v) kfun (u, v, p1),“方法”,“QP”);
kfun函数定义为:
函数kval = kfun (u, v, p1);
点= ((uv) * (uv)) / p1;
kval = 1 /(1 +点);
Matlab给了我一个警告信息:错误使用= = > svmtrain 453错误计算核函数:矩阵维度必须一致。
我不懂,是我的错误。如果你能帮我我真的很感激。
2的评论
第四Sem Geethanjali电气和电子工程
svmStruct = svmtrain (x、组Kernel_Function, @ (u, v) kfun (u, v, p1),“方法”,“QP”);
函数调用将如何改变如果我用fitcsvm代替svmtrain。
你能帮助我。

登录置评。


桑迪
桑迪 2014年10月3日
Caterina,
只是想检查是否你能够解决上述问题。我也得到同样的错误。将你我在上面的代码定制的内核。
提前谢谢。

muqdad aljuboori
muqdad aljuboori 2017年4月2日
你好我非常感兴趣这个讨论我想应用新的脂肪酸的我的项目,但它不工作,我所做的
SVR1上= fitrsvm (TrainInputs TrainTargets,
“KernelFunction”@ (u, v) kfun3 (u, v),
“KernelScale”,“汽车”,“标准化”,真正的);__
错误的是
使用classreg.learning.modelparams.SVMParams错误。(第225行)你必须通过“KernelFunction”作为特征向量。
在classreg.learning错误。FitTemplate / fillIfNeeded(第598行)this.MakeModelParams (this.Type, this.MakeModelInputArgs {:});
在classreg.learning.FitTemplate错误。使(第124行)temp = fillIfNeeded(临时、类型);
任何建议吗? ? ?谢谢
1评论
杰里米Huard
杰里米Huard 2023年1月31日
你应该指定核函数为char数组:
SVR1上= fitrsvm (TrainInputs TrainTargets,
“KernelFunction”,“kfun3”,
“KernelScale”,“汽车”,“标准化”,真正的);

登录置评。

社区寻宝

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

开始狩猎!