在matlab中如何使用SVM工具箱
一、SVM下載
http://see.xidian.edu.cn/faculty/chzheng/bishe/indexfiles/indexl.htm二、在MATLAB中添加svm工具箱
參考:
http://jingyan.baidu.com/article/a501d80cf764c3ec630f5ef5.htm1、首先需要MATLAB SVM Toolbox,將其中的文件解壓并命名為svm
2、將文件拷到E:\matlab\toolbox (我的是在E:\MATLAB\R2013a\toolbox)
3、打開matlab點擊set path---->add folder 然后把你的工具箱文件夾添加進去就可以了
4、路徑加進去后在file→Preferences→General的Toolbox Path Caching里點擊update Toolbox Path Cache更新一下。
5、最后在matlab的命令欄中輸入which svcoutput可以查看路徑E:\matlab\toolbox\svm\svcoutput.m就可以了
三、如何使用SVM
原文地址:
http://blog.sina.com.cn/s/blog_5bd2cb260100eo2y.html1,下載SVM工具箱:http://see.xidian.edu.cn/faculty/chzheng/bishe/indexfiles/indexl.htm
2,安裝到matlab文件夾中
??1)將下載的SVM工具箱的文件夾放在\matlab71\toolbox\下
??2)打開matlab->File->Set Path中添加SVM工具箱的文件夾
??現在,就成功的添加成功了.
??可以測試一下:在matlab中輸入which svcoutput 回車,如果可以正確顯示路徑,就證明添加成功了,例如:
?C:\Program Files\MATLAB71\toolbox\svm\svcoutput.m
3,用SVM做分類的使用方法
??1)在matlab中輸入必要的參數:X,Y,ker,C,p1,p2
????我做的測試中取的數據為:
????N = 50;
????n=2*N;
????randn('state',6);
????x1 = randn(2,N)
????y1 = ones(1,N);
????x2 = 5+randn(2,N);
????y2 = -ones(1,N);
????figure;
????plot(x1(1,:),x1(2,:),'bx',x2(1,:),x2(2,:),'k.');
????axis([-3 8 -3 8]);
????title('C-SVC')
????hold on;
????X1 = [x1,x2];
????Y1 = [y1,y2];??
????X=X1';
????Y=Y1';
????其中,X是100*2的矩陣,Y是100*1的矩陣
????C=Inf;
????ker='linear';
????global p1 p2
????p1=3;
????p2=1;
????然后,在matlab中輸入:[nsv alpha bias] = svc(X,Y,ker,C),回車之后,會顯示:
???
Support Vector Classification
_____________________________
Constructing ...
Optimising ...
Execution time:??1.9 seconds
Status : OPTIMAL_SOLUTION
|w0|^2????: 0.418414
Margin????: 3.091912
Sum alpha : 0.418414
Support Vectors : 3 (3.0%)
nsv =
?????3
alpha =
????0.0000
????0.0000
????0.0000
????0.0000
????0.0000
????2)輸入預測函數,可以得到與預想的分類結果進行比較.
??????輸入:predictedY = svcoutput(X,Y,X,ker,alpha,bias),回車后得到:
????
predictedY =
?????1
?????1
?????1
?????1
?????1
?????1
?????1
?????1
?????1
????3)畫圖
??????輸入:svcplot(X,Y,ker,alpha,bias),回車
?補充:
X和Y為數據,m*n:m為樣本數,n為特征向量數
比如:取20組訓練數據X,10組有故障,10組無故障的,每個訓練數據有13個特征參數,則m=20,n=13
Y為20*1的矩陣,其中,10組為1,10組為-1.
對于測試數據中,如果取6組測試數據,3組有故障,3組無故障的,則m=6,n=13
Y中,m=6,n=1
????
四、在Matlab中最初使用SVM出現的問題
原文地址:http://www.ilovematlab.cn/thread-265034-1-1.html
??? Undefined function or method 'qp' for input arguments of type 'double'.
看到論壇有很多人問這個問題[1],其實出現這個問題的根本原因是:matlab 5.X 的qp函數在matlab 6.0以上版本被quadprog函數取代[2].
解決辦法:
[alpha lambda how] = quadprog(H, c, A, b,??[], [], vlb, vub, x0, neqcstr);
替換svc函數中的72行:[alpha lambda how] = qp(H, c, A, b, vlb, vub, x0, neqcstr);
我在測試的時候,發現[alpha lambda how] = qp(H, c, A, b, vlb, vub, x0, neqcstr);在svc函數的第60行。應該是svm的版本不同造成的。
總結
以上是生活随笔為你收集整理的在matlab中如何使用SVM工具箱的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tensorboard安装和访问(pyt
- 下一篇: SVM核函数