今天聽了一個師兄的講課,才發現我一直在科研上特别差勁,主要表現在以下幾個方面,(現在提出也為了督促自己在以後的學習工作道路上能夠避免這些問題)
1、做事情總是有頭無尾,緻使知識點不能一次搞透,每次在用到相同知識點的時候才發現之前對這個知識了解的還是不透徹。
2、不善于總結,做的東西(如代碼和論文)很多也比較雜,但是卻沒有記錄每一項工作,緻使到最後很難理清之前做過的東西。
3、檢索能力較差,緻使尋找自己需要的資料需要耗費太長的時間。
4、閱讀文獻的數量太少,是以很難提出新的想法和見解。
以上4點是我認為的科研和工作中主要需要提高的地方,我也從現在起開始逐條的改善,希望1個月之後的我可以養成良好的習慣,使得上面的缺陷得以修正。
下面就進行第一個改善:SVM接觸時間很長了,理論和代碼都研究和使用過,由于網上的資料整理的很多,自己就懶得整理,每次有問題就百度、谷歌一下基本都解決了,但是現在如果有人問我相關具體的内容,我還是很難答出來,畢竟别人的東西就是别人的,看了并不代表你掌握了,隻有自己掌握的知識才是自己的,才能與人交流,并提出自己的見解。
一、SVM如何使用MATLAB調用
我之是以介紹這個,主要的原因是,大家在做機器視覺算法時使用最多的工具,而matlab中自帶的svm工具箱又隻能用于分兩類的情況,而且不能進行交叉驗證選擇合适的參數,但是在正常的使用時不可避免的會遇到分多類的問題,而且選擇合适的參數對于SVM也非常重要。下面介紹如何下載下傳libsvm,配置matlab環境。
1. 參考網站:
2、配置MATLAB環境
A.設定path
File->set path ->add with subfolders->加入libsvm-3.11檔案夾的路徑
B. 在matlab中編譯
目的:将libsvm-3.11\matlab 中 libsvmwrite.c 等 C++檔案編譯成 libsvmread.mexw32 等matlab檔案,這樣就可以在command window中被直接調用了。
操作如下:1、mex -setup
Please choose your compiler for building external interface (MEX) files:
Would you like mex to locate installed compilers [y]/n? y
Please choose your compiler for building external interface (MEX) files:
Would you like mex to locate installed compilers [y]/n? y
Select a compiler:
[1] Lcc-win32 C 2.4.1 in D:\MATLAB~1\sys\lcc
[2] Microsoft Visual C++ 6.0 in D:\Microsoft Visual Studio
[0] None
Compiler: (此處不同版本的MATLAB和自己安裝的編譯器的不同顯示會有差别,是以隻要選擇你已經安裝的編譯器就好了)
Compiler: 2
Please verify your choices:
Compiler: Microsoft Visual C++ 6.0
Location: D:\Microsoft Visual Studio
Are these correct [y]/n? y
Trying to update options file: C:\Users\faruto\AppData\Roaming\MathWorks\MATLAB\R2009b\mexopts.bat
From template: D:\MATLAB~1\bin\win32\mexopts\msvc60opts.bat
Done . . .
2、make
make
此過程中一定要注意将路徑轉換到matlab路徑下,這樣才能調用make函數進行make.
上述需要注意的地方都已經指出來了,我也已經在matlab2012a和VS2010中測試過,好使。
操作結束就可以使用現成的資料集heart_scale來測試一下了,出現Accuracy = 86.6667% (234/270) (classification)
1 load(‘heart_scale‘)2 model =svmtrain(heart_scale_label,heart_scale_inst);3 [predict_label,accuracy] = svmpredict(heart_scale_label,heart_scale_inst,model);
其中的‘heart_scale’在libsvm中自帶的mat檔案。
二、如何參數尋優
1 %添加參數尋優代碼2 [bestacc,bestc,bestg] = SVMcg(heart_scale_label,heart_scale_inst,-9,9,-1,1,5,1,1);
因為此測試用例并不規範,是以使用不能很好的展現參數尋優之後的優勢。
以上就是實驗部分,通過小小的實驗可以對SVM的工作有了大概的了解,同時也促進自己學習理論的動力,是以下面一片部落格就主要介紹SVM理論方面的内容,因為SVM理論方面的介紹也非常多,是以我主要把那些好的參考内容進行整理,同時将自己的心得體會和了解寫出來,友善自己檢視,也友善大家交流。
原文:http://www.cnblogs.com/jiangnanrain/p/4018059.html