2016-10-05 65 views
0

我使用libSVM,matlab中的svmtrain函數比C少花費時間。儘管C中 - 通常比matlab快得多。兩個分類器都採用相同的參數,並以相同的迭代次數返回相同數量的SVM。svmtrain函數在matlab中的執行時間vs C版本

下面是兩個代碼: Matlab的:

t1=cputime; model = svmtrain(Labels,data, '-h 0 -s 0 -c 0.025 -n 0.01 -b 1 -t 0 -d 1 -p 0.001'); t2=cputime; fprintf('Elapsed time=%.3f\n',t2-t1)

和C代碼:

clock_t begin = clock(); 
    model = svm_train(&prob,&param);  
    clock_t end = clock();; 
    double time_spent = (double)(end - begin)/double(CLOCKS_PER_SEC); 
+0

「雖然Ç-in中普通速度遠高於MATLAB 「不一定 –

+0

https://stackoverflow.com/questions/20513071/performance-tradeoff-when-is-matlab-better-slower-than-cc –

+0

做更多的運行/基準。 – sascha

回答

0

當你正在使用的選項-b 1獲得概率:

  • libsvm將使用Platt scaling,以獲得這些概率與cross-validation
  • 交叉驗證的使用總是將數據分割隨機
  • C內,the default seed of 1 will be used
  • 也許 Matlab的接口將使用(或基於時間的晶種的任何其它)
    • 作爲第一步,我將Matlabs全局種子設置爲1,併爲C做同樣的操作;然後再次

正如我的評論指出衡量,這將是明智的,做更多的測試。即使種子不同(可能性),很多次運行的平均值應該與相同,因爲使用相同的代碼

又見this question其中對於不同行爲的一些其他possibilites列(你說你獲得相同數量的SV的,但也許該行爲是不同的內部)