欢迎来到天天文库
浏览记录
ID:57194564
大小:19.58 KB
页数:4页
时间:2020-08-05
《支持向量机matlab实现.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、支持向量机A=load('h:study.txt');%加载数据X=A(:,1:2);%特征值的数据label=A(:,3);%标签向量b=0;%待优化的参数[row,col]=size(A);%计算矩阵A的行数和列数iter=0;%迭代次数C=0.4;%最大间隔和分类正确的权重toler=0.001;MAX=40;%最大迭代次数alphas=zeros(row,1);%要求的参数,初始化为0while(iter2、*label)'*(X*X(i,:)'))+b;%第i个的预测值ei=fxi-double(label(i));%第i个预测值和真实值之差if(alphas(i)3、4、(alphas(i)>0&&label(i)*ei>toler)j=i;%产生另外一个值jwhilej==ij=randint(1,1,row)+1;endfxj=double((alphas.*label)'*(X*X(j,:)'))+b;%第j个的预测值ej=fxj-double(label(j));%第j个预测值和真实值之差5、alphasoldI=alphas(i);%保留参数的值alphasoldJ=alphas(j);if(label(i)~=label(j))%限制求导出来的label(j)的值,在L和H之间L=max(0,alphas(j)-alphas(i));H=min(C,C+alphas(j)-alphas(i));elseL=max(0,alphas(j)+alphas(i)-C);H=min(C,alphas(j)+alphas(i));endifL==Hcontinue;endeta=X(i,:)*X(i,:)'+X(j,:)*X(j,:6、)'-2*X(i,:)*X(j,:)';%这部分代码是求求导出来的最优值ifeta<=0continue;endalphas(j)=alphas(j)+label(j)*(ei-ej)/eta;%求出优化后的alphas(j)值ifalphas(j)>H%求出的alphas(j)必须在L和H之间alphas(j)=H;endifalphas(j)7、+label(i)*label(j)*(alphasoldJ-alphas(j));%更新alphas(i)的值b1=b-ei-label(i)*(alphas(i)-alphasoldI)*(X(i,:)*X(i,:)')-label(j)*(alphas(j)-alphasoldJ)*(X(j,:)*X(j,:)');b2=b-ej-label(i)*(alphas(i)-alphasoldI)*(X(i,:)*X(i,:)')-label(j)*(alphas(j)-alphasoldJ)*(X(j,:)*X(j,:)');ifal8、phas(i)>0&&alphas(i)0&&alphas(j)9、这个对偶方程用SMO算法求解。实质就是求出那些参数,然后就可以求出W,就可以得出那些方程,就得到分割平面。这个算法的思想是在固定其余参数的时候,求得最优的一个参数,但是只把一个当做参数的话,那么这个参数可以用其他的参数表示,那么这个参数就不是参数。用一对参数把一个用另外一个参数表示,求出最优解。算法流程:遍历每个参数;这个参数是否满足要求()对应的代码:fxi=double((alphas.*label)'*(X*X(i,:)'))+b;%第i个的预测值ei=fxi-double(label(i));%第i个预测值和真实值之差if(alp10、has(i)11、12、(alphas(i)>0&&label(i)*ei>toler)如果满足要求的话,随机选取另外一个参数,j=i;%产生另外一个值j
2、*label)'*(X*X(i,:)'))+b;%第i个的预测值ei=fxi-double(label(i));%第i个预测值和真实值之差if(alphas(i)3、4、(alphas(i)>0&&label(i)*ei>toler)j=i;%产生另外一个值jwhilej==ij=randint(1,1,row)+1;endfxj=double((alphas.*label)'*(X*X(j,:)'))+b;%第j个的预测值ej=fxj-double(label(j));%第j个预测值和真实值之差5、alphasoldI=alphas(i);%保留参数的值alphasoldJ=alphas(j);if(label(i)~=label(j))%限制求导出来的label(j)的值,在L和H之间L=max(0,alphas(j)-alphas(i));H=min(C,C+alphas(j)-alphas(i));elseL=max(0,alphas(j)+alphas(i)-C);H=min(C,alphas(j)+alphas(i));endifL==Hcontinue;endeta=X(i,:)*X(i,:)'+X(j,:)*X(j,:6、)'-2*X(i,:)*X(j,:)';%这部分代码是求求导出来的最优值ifeta<=0continue;endalphas(j)=alphas(j)+label(j)*(ei-ej)/eta;%求出优化后的alphas(j)值ifalphas(j)>H%求出的alphas(j)必须在L和H之间alphas(j)=H;endifalphas(j)7、+label(i)*label(j)*(alphasoldJ-alphas(j));%更新alphas(i)的值b1=b-ei-label(i)*(alphas(i)-alphasoldI)*(X(i,:)*X(i,:)')-label(j)*(alphas(j)-alphasoldJ)*(X(j,:)*X(j,:)');b2=b-ej-label(i)*(alphas(i)-alphasoldI)*(X(i,:)*X(i,:)')-label(j)*(alphas(j)-alphasoldJ)*(X(j,:)*X(j,:)');ifal8、phas(i)>0&&alphas(i)0&&alphas(j)9、这个对偶方程用SMO算法求解。实质就是求出那些参数,然后就可以求出W,就可以得出那些方程,就得到分割平面。这个算法的思想是在固定其余参数的时候,求得最优的一个参数,但是只把一个当做参数的话,那么这个参数可以用其他的参数表示,那么这个参数就不是参数。用一对参数把一个用另外一个参数表示,求出最优解。算法流程:遍历每个参数;这个参数是否满足要求()对应的代码:fxi=double((alphas.*label)'*(X*X(i,:)'))+b;%第i个的预测值ei=fxi-double(label(i));%第i个预测值和真实值之差if(alp10、has(i)11、12、(alphas(i)>0&&label(i)*ei>toler)如果满足要求的话,随机选取另外一个参数,j=i;%产生另外一个值j
3、
4、(alphas(i)>0&&label(i)*ei>toler)j=i;%产生另外一个值jwhilej==ij=randint(1,1,row)+1;endfxj=double((alphas.*label)'*(X*X(j,:)'))+b;%第j个的预测值ej=fxj-double(label(j));%第j个预测值和真实值之差
5、alphasoldI=alphas(i);%保留参数的值alphasoldJ=alphas(j);if(label(i)~=label(j))%限制求导出来的label(j)的值,在L和H之间L=max(0,alphas(j)-alphas(i));H=min(C,C+alphas(j)-alphas(i));elseL=max(0,alphas(j)+alphas(i)-C);H=min(C,alphas(j)+alphas(i));endifL==Hcontinue;endeta=X(i,:)*X(i,:)'+X(j,:)*X(j,:
6、)'-2*X(i,:)*X(j,:)';%这部分代码是求求导出来的最优值ifeta<=0continue;endalphas(j)=alphas(j)+label(j)*(ei-ej)/eta;%求出优化后的alphas(j)值ifalphas(j)>H%求出的alphas(j)必须在L和H之间alphas(j)=H;endifalphas(j)7、+label(i)*label(j)*(alphasoldJ-alphas(j));%更新alphas(i)的值b1=b-ei-label(i)*(alphas(i)-alphasoldI)*(X(i,:)*X(i,:)')-label(j)*(alphas(j)-alphasoldJ)*(X(j,:)*X(j,:)');b2=b-ej-label(i)*(alphas(i)-alphasoldI)*(X(i,:)*X(i,:)')-label(j)*(alphas(j)-alphasoldJ)*(X(j,:)*X(j,:)');ifal8、phas(i)>0&&alphas(i)0&&alphas(j)9、这个对偶方程用SMO算法求解。实质就是求出那些参数,然后就可以求出W,就可以得出那些方程,就得到分割平面。这个算法的思想是在固定其余参数的时候,求得最优的一个参数,但是只把一个当做参数的话,那么这个参数可以用其他的参数表示,那么这个参数就不是参数。用一对参数把一个用另外一个参数表示,求出最优解。算法流程:遍历每个参数;这个参数是否满足要求()对应的代码:fxi=double((alphas.*label)'*(X*X(i,:)'))+b;%第i个的预测值ei=fxi-double(label(i));%第i个预测值和真实值之差if(alp10、has(i)11、12、(alphas(i)>0&&label(i)*ei>toler)如果满足要求的话,随机选取另外一个参数,j=i;%产生另外一个值j
7、+label(i)*label(j)*(alphasoldJ-alphas(j));%更新alphas(i)的值b1=b-ei-label(i)*(alphas(i)-alphasoldI)*(X(i,:)*X(i,:)')-label(j)*(alphas(j)-alphasoldJ)*(X(j,:)*X(j,:)');b2=b-ej-label(i)*(alphas(i)-alphasoldI)*(X(i,:)*X(i,:)')-label(j)*(alphas(j)-alphasoldJ)*(X(j,:)*X(j,:)');ifal
8、phas(i)>0&&alphas(i)0&&alphas(j)9、这个对偶方程用SMO算法求解。实质就是求出那些参数,然后就可以求出W,就可以得出那些方程,就得到分割平面。这个算法的思想是在固定其余参数的时候,求得最优的一个参数,但是只把一个当做参数的话,那么这个参数可以用其他的参数表示,那么这个参数就不是参数。用一对参数把一个用另外一个参数表示,求出最优解。算法流程:遍历每个参数;这个参数是否满足要求()对应的代码:fxi=double((alphas.*label)'*(X*X(i,:)'))+b;%第i个的预测值ei=fxi-double(label(i));%第i个预测值和真实值之差if(alp10、has(i)11、12、(alphas(i)>0&&label(i)*ei>toler)如果满足要求的话,随机选取另外一个参数,j=i;%产生另外一个值j
9、这个对偶方程用SMO算法求解。实质就是求出那些参数,然后就可以求出W,就可以得出那些方程,就得到分割平面。这个算法的思想是在固定其余参数的时候,求得最优的一个参数,但是只把一个当做参数的话,那么这个参数可以用其他的参数表示,那么这个参数就不是参数。用一对参数把一个用另外一个参数表示,求出最优解。算法流程:遍历每个参数;这个参数是否满足要求()对应的代码:fxi=double((alphas.*label)'*(X*X(i,:)'))+b;%第i个的预测值ei=fxi-double(label(i));%第i个预测值和真实值之差if(alp
10、has(i)11、12、(alphas(i)>0&&label(i)*ei>toler)如果满足要求的话,随机选取另外一个参数,j=i;%产生另外一个值j
11、
12、(alphas(i)>0&&label(i)*ei>toler)如果满足要求的话,随机选取另外一个参数,j=i;%产生另外一个值j
此文档下载收益归作者所有