——包含libsvm四個exe程式包,我們所用的庫就是它們,然後在matlab命令框輸入
1.mex –setup
2.選擇vc++
3.之後輸入make
問題一:error: d:\libsvm\libsvm-3.21\matlab\make.m failed (line 13)
未找到 e:\百葉通\matlab\libsvmread.c;請檢查您是否位於正確的當前資料夾,並檢查 'e:\百葉通\matlab\libsvmread.c' 的拼寫。
解決方法:啊,太粗心了,看了一下我的當前路徑居然不是libsvm所在路徑,改過來就好了,
之後再輸入make,然後在當前資料夾下多了4個檔案,libsvmread.mexw64、libsvmwrite.mexw64、svmpredict.mexw64、svmtrain.mexw64
問題二:
找不到d:\libsvm\libsvm-3.21\matlab\svmtrain.exp
找不到 d:\libsvm\libsvm-3.21\matlab\svmtrain.exp
找不到d:\libsvm\libsvm-3.21\matlab\svmpredict.exp
找不到d:\libsvm\libsvm-3.21\matlab\svmpredict.exp
解決方法:把出現的四個檔案複製到d:\libsvm\libsvm-3.21\windows下就好了。
開始使用matlab自帶的資料來驗證一下libsvm裝好了嘛。
load heart_scale
問題三:
錯誤使用 load
ascii 檔案 heart_scale的第 3 行中的列數必須與前面行中的列數相同。
解決方法:使用libsvmread函式,在matlab下直接libsvmread(heart_scale)就好了。
總結一下全過程如下:
1.mex –setup
2.選擇vc++
3.make
4. [heart_scale_label,heart_scale_inst] =libsvmread('../heart_scale');
model=svmtrain(heart_scale_label,heart_scale_inst,'-c1 -g 0.07');
[predict_label,accuracy,dec_values]=svmpredict(heart_scale_label,heart_scale_inst,model);
此處的訓練集和測試集用的是同一組資料。
結果:optimization finished, #iter = 134
nu = 0.433785
obj = -101.855060, rho = 0.426412
nsv = 130, nbsv = 107
total nsv = 130
accuracy = 86.6667% (234/270)(classification)
好啦其中,#iter為迭代次數,nu是你選擇的核函式型別的引數,obj為svm檔案轉換為的二次規劃求解得到的最小值,rho為判決函式的偏置項b,nsv為標準支援向量個數(0最後會生成乙個model,如圖
是訓練得到的模型,是乙個結構體(
如果引數中用到-v,得到的就不是結構體,對於分類問題,得到的是交叉檢驗下的平均分類準確率;對於回歸問題,得到的是均方誤差)使用-v是在引數尋優時尋找最優引數所用的,在正常模型訓練時不用-v引數。
在MATLAB中安裝libsvm
搞了一天,看了很多資料,終於搞好了matlab中呼叫大牛寫好的svm庫,將結果告訴大家避免以後走彎路。1.參考 詳解 2.操作流程 請注意 詳細操作流程請參考上面的 詳解 這裡只說大框架和詳解裡沒有提到的問題。a.設定path file set path add with subfolders 加入...
LibSVM 在matlab中的使用
搞了一天,看了很多資料,終於搞好了matlab中呼叫大牛寫好的svm庫,將結果告訴大家避免以後走彎路。1.參考 詳解 2.操作流程 請注意 詳細操作流程請參考上面的 詳解 這裡只說大框架和詳解裡沒有提到的問題。a.設定path file set path add with subfolders 加入...
LibSVM 在matlab中的使用
搞了一天,看了很多資料,終於搞好了matlab中呼叫大牛寫好的svm庫,將結果告訴大家避免以後走彎路。1.參考 詳解 2.操作流程 請注意 詳細操作流程請參考上面的 詳解 這裡只說大框架和詳解裡沒有提到的問題。a.設定path file set path add with subfolders 加入...