使用libsvm中的svm_cross_validation函数进行交叉验证
from:https://blog.csdn.net/tao1107291820/article/details/51581322
在libsvm的使用中,為了得到更好的c、gama參數(shù),可以通過(guò)多次使用libsvm中的svm_cross_validation函數(shù)進(jìn)行參數(shù)尋優(yōu),下面是svm_cross_validation的一種使用方法:
svm_problem的定義:
struct svm_problem
{
int l;
double *y;
struct svm_node **x;
};
1.首先明白svm_cross_validation函數(shù)的輸入與輸出,
輸入:prob,param,nr_fold。
? ?prob是將所有樣本的特征和類別按照l(shuí)ibsvm要求的格式轉(zhuǎn)換成?svm_problem結(jié)構(gòu)體數(shù)組,?prob的長(zhǎng)度要求能夠被nr_fold整除
? ?param是分類器訓(xùn)練參數(shù)
? ?nr_fold是交叉驗(yàn)證的折數(shù)
輸出:target
? ?target是一個(gè)double類型的數(shù)組,長(zhǎng)度為prob.l,存儲(chǔ)的是對(duì)prob中各個(gè)樣本的識(shí)別結(jié)果,將target與存儲(chǔ)類別的數(shù)組prob.y進(jìn)行比較可以得到此次交叉驗(yàn)證的識(shí)別準(zhǔn)確率。
函數(shù)大概運(yùn)行步驟:
如果做5折交叉驗(yàn)證,svm_cross_validation函數(shù)會(huì)建立一個(gè)索引數(shù)組perm,然后把數(shù)組perm當(dāng)作索引訪問(wèn)prob達(dá)到打亂prob的效果,再將prob分成5份,4份用于訓(xùn)練,剩下一份測(cè)試,target存儲(chǔ)測(cè)試結(jié)果,這樣分5次后,target就保存了對(duì)prob中所有元素的測(cè)試結(jié)果,并且存儲(chǔ)順序和prob中樣本的排列是一樣的。將target與prob.y依次對(duì)比就得到此次交叉驗(yàn)證的識(shí)別準(zhǔn)確率。
?
demo:?https://download.csdn.net/download/liushuai_123/7378795
總結(jié)
以上是生活随笔為你收集整理的使用libsvm中的svm_cross_validation函数进行交叉验证的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Visual Studio2022 离线
- 下一篇: 暴雪:星际2仍在审批 筹划中国电竞联赛