首页 > 编程知识 正文

svm的matlab代码,svm支持向量机matlab

时间:2023-05-04 09:04:53 阅读:173935 作者:3868

%%

% by yunmi

% email : lvyun mi @ http://www.doc ZJ.com/doc/4e0ff 8791611 cc 7931 b 765 ce 050876323112744 b.html

%reference:faruto

%%转载时请注明:

% libsvm若干内核函数的实现

%本文档是一个学习文档,只有libsvm初学者才能共同学习

%本文实现了libsvm的四个基本核:线性核、多项式核、径向核、s形核,以及faruto提到的几个定制核。 纯粹学习使用,廉价自己学习定制核

%%

清除%

清除

clc

%算法开始时间

tic;

%读取数据

load heart_scale.mat

trainData=heart_scale_inst;

trainLabel=heart_scale_label;

testData=heart_scale_inst;

testLabel=heart_scale_label;

clear heart_scale_inst;

clear heart_scale_label;

%培训和测试数据的行数和属性数

[trainRow,dim]=size(traindata );

testrow=length(testdata );

%参数设定

%参数g:伽玛

%参数coef0

%参数d :倾斜

%g=1/Length(Unique ) trainLabel );

g=1/Dim; %默认为属性计数的倒数

coef0=0;

d=3;

%线性核函数k(x,x ' )=x*x '

%{

kTrain=trainData*trainData ';

ktrain=[(1:trainrow ),kTrain];

kTest=testData*trainData ';

kTest]=[(1:testrow ),ktest );

%}

%多项式核函数k(UI,vj )=)=(gama*ui*vj' coef0) ^degree

%参数g:伽玛

%参数coef0

%参数d :倾斜

%{

ktrain=g*(traindata*traindata ' ) coef0;

for i=1:trainRow

for j=1:trainRow

ktrain(I,j ) ktrain(I,j ) ^d;

结束

结束

ktrain=[(1:trainrow ),kTrain];

kest=g*(testdata*traindata ' ) coef0;

for i=1:testRow

for j=1:trainRow

ktest(I,j ) ktest(I,j ) ^d;

结束

结束

kTest]=[(1:testrow ),ktest );

%}

%径向基核函数k(ui,vj )=exp(-gama*|ui-VJ||^2) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )。)

%参数g:伽玛

%%{

ktrain=Zeros(trainRow,trainrow );

for i=1:trainRow

for j=1:trainRow

ktrain(I,j )=exp(-g*norm ) train data (I, )-traindata(j, ) )2);

结束

结束

ktrain=[(1:trainrow ),kTrain];

kest=Zeros(testrow,trainRow );

for i=1:testRow

for j=1:trainRow

kest(I,j )=exp(-g*norm ) testdata ) I,(-traindata(j, ) ) )2);

结束

结束

kTest]=[(1:testrow ),ktest );

%}

%s核函数k(ui,vj )=Tanh ) gama*ui*VJ'coef0) ) ) ) ) ) ) ) ) s ) ) s ) ) s ) s ) ) 65

%参数g:伽玛

%参数coef0

%%{

ktrain=Zeros(trainRow,trainrow );

for i=1:trainRow

for j=1:trainRow

ktrain(I,j )=tanh(g*traindata(I, ) traindata ) j, ) ' coef0);

结束

结束

ktrain=[(1:trainrow ),kTrain];

kest=Zeros(testrow,trainRow );

for i=1:testRow

for j=1:trainRow

kest(I,j )=tanh(g*testdata(I, ) traindata ) j, ) ' coef0);

结束

结束

kTest]=[(1:testrow ),ktest );

%}

%定制核心1k(u,v ) [i,j]=||ui||*||vj||

%{

ktrain=ones(trainRow,trainrow );

for i=1:trainRow

for j=1:trainRow

ktrain(I,j )=sum(traindata(I, ).^2) ) 0.5*sum ) traindata ) j, ).^2) ^0.5;

结束

结束

ktrain=[(1:trainrow ),kTrain];

kest=ones(testrow,trainRow );

for i=1:testRow

for j=1:trainRow

kest(I,j )=sum(testdata(I, ).^2) ) 0.5*sum ) traindata, ).^2) ^0.5;

结束

结束

kTest]=[(1:testrow ),ktest );

%}

%定制核心2k(u,v ) [i,j]=ui*VJ'/(|ui|||| )

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。