真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

支撐矢量機(jī)java代碼,支撐矢量機(jī)java代碼

支持向量機(jī)模型的使用?

LIBSVM的簡單介紹 2006-09-20 15:59:48

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了開原免費(fèi)建站歡迎大家使用!

大 中 小

1. LIBSVM 軟件包簡介

LIBSVM 是臺灣大學(xué)林智仁(Chih-Jen Lin)博士等開發(fā)設(shè)計(jì)的一個(gè)操作簡單、易于使用、快速有效的通用SVM 軟件包,可以解決分類問題(包括C- SVC、n - SVC )、回歸問題(包括e - SVR、n - SVR )以及分布估計(jì)(one-class-SVM )等問題,提供了線性、多項(xiàng)式、徑向基和S形函數(shù)四種常用的核函數(shù)供選擇,可以有效地解決多類問題、交叉驗(yàn)證選擇參數(shù)、對不平衡樣本加權(quán)、多類問題的概率估計(jì)等。LIBSVM 是一個(gè)開源的軟件包,需要者都可以免費(fèi)的從作者的個(gè)人主頁

處獲得。他不僅提供了LIBSVM的C++語言的算法源代碼,還提供了Python、Java、R、MATLAB、Perl、Ruby、LabVIEW以及C#.net 等各種語言的接口,可以方便的在Windows 或UNIX 平臺下使用。另外還提供了WINDOWS 平臺下的可視化操作工具SVM-toy,并且在進(jìn)行模型參數(shù)選擇時(shí)可以繪制出交叉驗(yàn)證精度的等高線圖。

2. LIBSVM 使用方法簡介

LibSVM是以源代碼和可執(zhí)行文件兩種方式給出的。如果是Windows系列操作系統(tǒng),可以直接使用軟件包提供的程序,也可以進(jìn)行修改編譯;如果是Unix類系統(tǒng),必須自己編譯。

LIBSVM 在給出源代碼的同時(shí)還提供了Windows操作系統(tǒng)下的可執(zhí)行文件,包括:進(jìn)行支持向量機(jī)訓(xùn)練的svmtrain.exe;根據(jù)已獲得的支持向量機(jī)模型對數(shù)據(jù)集進(jìn)行預(yù)測的svmpredict.exe;以及對訓(xùn)練數(shù)據(jù)與測試數(shù)據(jù)進(jìn)行簡單縮放操作的svmscale.exe。它們都可以直接在DOS 環(huán)境中使用。如果下載的包中只有C++的源代碼,則也可以自己在VC等軟件上編譯生成可執(zhí)行文件。

3. LIBSVM 使用的一般步驟是:

1) 按照LIBSVM軟件包所要求的格式準(zhǔn)備數(shù)據(jù)集;

2) 對數(shù)據(jù)進(jìn)行簡單的縮放操作;

3) 考慮選用RBF 核函數(shù);

4) 采用交叉驗(yàn)證選擇最佳參數(shù)C與g ;

5) 采用最佳參數(shù)C與g 對整個(gè)訓(xùn)練集進(jìn)行訓(xùn)練獲取支持向量機(jī)模型;

6) 利用獲取的模型進(jìn)行測試與預(yù)測。

4. LIBSVM使用的數(shù)據(jù)格式

1)訓(xùn)練數(shù)據(jù)和檢驗(yàn)數(shù)據(jù)文件格式如下:

label index1:value1 index2:value2 ...

其中l(wèi)abel 是訓(xùn)練數(shù)據(jù)集的目標(biāo)值,對于分類,它是標(biāo)識某類的整數(shù)(支持多個(gè)類);對于回歸,是任意實(shí)數(shù)。index 是以1開始的整數(shù),可以是不連續(xù)的;value為實(shí)數(shù),也就是我們常說的自變量。檢驗(yàn)數(shù)據(jù)文件中的label只用于計(jì)算準(zhǔn)確度或誤差,如果它是未知的,只需用一個(gè)數(shù)填寫這一欄,也可以空著不填。

在程序包中,還包括有一個(gè)訓(xùn)練數(shù)據(jù)實(shí)例:heart_scale,方便參考數(shù)據(jù)文件格式以及練習(xí)使用軟件。可以編寫小程序,將自己常用的數(shù)據(jù)格式轉(zhuǎn)換成這種格式

2)Svmtrain和Svmpredict的用法

LIBSVM軟件提供的各種功能都是DOS命令執(zhí)行方式。我們主要用到兩個(gè)程序,svmtrain(訓(xùn)練建模)和svmpredict(使用已有的模型進(jìn)行預(yù)測),下面分別對這兩個(gè)程序的使用方法、各參數(shù)的意義以及設(shè)置方法做一個(gè)簡單介紹:

(1)Svmtrain的用法:

svmtrain [options] training_set_file [model_file]

Options:可用的選項(xiàng)即表示的涵義如下

-s svm類型:SVM設(shè)置類型(默認(rèn)0)

0 -- C-SVC

1 --v-SVC

2 – 一類SVM

3 -- e -SVR

4 -- v-SVR

-t 核函數(shù)類型:核函數(shù)設(shè)置類型(默認(rèn)2)

0 – 線性:u'v

1 – 多項(xiàng)式:(r*u'v + coef0)^degree

2 – RBF函數(shù):exp(-r|u-v|^2)

3 –sigmoid:tanh(r*u'v + coef0)

-d degree:核函數(shù)中的degree設(shè)置(默認(rèn)3)

-g 函數(shù)設(shè)置(默認(rèn)1/ k)?r(gama):核函數(shù)中的

-r coef0:核函數(shù)中的coef0設(shè)置(默認(rèn)0)

?-c cost:設(shè)置C-SVC, -SVR的參數(shù)(默認(rèn)1)?-SVR和

- SVR的參數(shù)(默認(rèn)0.5)?-SVC,一類SVM和?-n nu:設(shè)置

-SVR?-p e:設(shè)置的值(默認(rèn)0.1)?中損失函數(shù)

-m cachesize:設(shè)置cache內(nèi)存大小,以MB為單位(默認(rèn)40)

-e :設(shè)置允許的終止判據(jù)(默認(rèn)0.001)?

-h shrinking:是否使用啟發(fā)式,0或1(默認(rèn)1)

-wi C(C-SVC中的C)(默認(rèn)1)?weight:設(shè)置第幾類的參數(shù)C為weight

-v n: n-fold交互檢驗(yàn)?zāi)J?/p>

其中-g選項(xiàng)中的k是指輸入數(shù)據(jù)中的屬性數(shù)。option -v 隨機(jī)地將數(shù)據(jù)剖分為n部分并計(jì)算交互檢驗(yàn)準(zhǔn)確度和均方根誤差。以上這些參數(shù)設(shè)置可以按照SVM的類型和核函數(shù)所支持的參數(shù)進(jìn)行任意組合,如果設(shè)置的參數(shù)在函數(shù)或SVM類型中沒有也不會產(chǎn)生影響,程序不會接受該參數(shù);如果應(yīng)有的參數(shù)設(shè)置不正確,參數(shù)將采用默認(rèn)值。training_set_file是要進(jìn)行訓(xùn)練的數(shù)據(jù)集;model_file是訓(xùn)練結(jié)束后產(chǎn)生的模型文件,文件中包括支持向量樣本數(shù)、支持向量樣本以及l(fā)agrange系數(shù)等必須的參數(shù);該參數(shù)如果不設(shè)置將采用默認(rèn)的文件名,也可以設(shè)置成自己慣用的文件名。

(2)Svmpredict的用法:

svmpredict test_file model_file output_file

model_file 是由svmtrain產(chǎn)生的模型文件;test_file是要進(jìn)行預(yù)測的數(shù)據(jù)文件;Output_file是svmpredict的輸出文件。svm-predict沒有其它的選項(xiàng)。

下面是具體的使用例子

svmtrain -s 0 -c 1000 -t 1 -g 1 -r 1 -d 3 data_file

訓(xùn)練一個(gè)由多項(xiàng)式核(u'v+1)^3和C=1000組成的分類器。

svmtrain -s 1 -n 0.1 -t 2 -g 0.5 -e 0.00001 data_file =?-SVM (?在RBF核函數(shù)exp(-0.5|u-v|^2)和終止允許限0.00001的條件下,訓(xùn)練一個(gè) 0.1)分類器。 svmtrain -s 3 -p 0.1 -t 0 -c 10 data_file =?以線性核函數(shù)u'v和C=10及損失函數(shù) 0.1求解SVM回歸。

支持向量機(jī)

支持向量機(jī)可以用于分類、回歸與異常點(diǎn)檢測,它有以下優(yōu)勢:

1、對高維數(shù)據(jù)集十分有效。

2、當(dāng)pn時(shí),依然有效。

3、高效利用內(nèi)存。

4、不同的核函數(shù)與決策函數(shù)一一對應(yīng)。

缺點(diǎn)如下:

1、當(dāng)pn時(shí),需要合理選用核函數(shù)以避免過擬合。

2、由于支持向量機(jī)不直接提供概率估計(jì),需要經(jīng)過五折交叉驗(yàn)證計(jì)算得到,所以它較慢。

SVC、NuSVC和LinearSVC能夠?qū)崿F(xiàn)多元分類。SVC與NuSVC十分相似,不同之處在于NuSVC引入了一個(gè)新的超參數(shù)v,它可以控制支持向量的數(shù)量和訓(xùn)練誤差。LinearSVC是另一個(gè)實(shí)現(xiàn)線性核函數(shù)的支持向量分類,所以它不接受關(guān)鍵詞kernel,也沒有所謂的支持向量。

支持向量的解釋:支持向量本質(zhì)上就是一個(gè)向量,而且是離間隔邊界最近的向量,也就是這些向量支撐了整個(gè)間隔邊界,支持向量的名字由來就是這樣。

多元分類在分類中主要有兩種方法:one-vs-one和one-vs-rest。

one-vs-one:假設(shè)有n個(gè)類別,則會針對兩兩類別建立二項(xiàng)分類器,得到k=n*(n-1)/2個(gè)分類器。對新數(shù)據(jù)進(jìn)行分類時(shí),依次使用這k個(gè)分類器進(jìn)行分類,每次分類相當(dāng)于一次投票,分類結(jié)果是哪個(gè)就相當(dāng)于對哪個(gè)類投了一票。在使用全部k個(gè)分類器進(jìn)行分類后,相當(dāng)于進(jìn)行了k次投票,選擇得票最多的那個(gè)類作為最終分類結(jié)果。

one-vs-rest:假設(shè)有n個(gè)類別,那么就會建立n個(gè)二項(xiàng)分類器,每個(gè)分類器針對其中一個(gè)類別和剩余類別進(jìn)行分類。進(jìn)行預(yù)測時(shí),利用這n個(gè)二項(xiàng)分類器進(jìn)行分類,得到數(shù)據(jù)屬于當(dāng)前類的概率,選擇其中概率最大的一個(gè)類別作為最終的預(yù)測結(jié)果。

其中,one-vs-rest更加受到青睞,因?yàn)樗觳⑶医Y(jié)果也很不錯(cuò)。

在內(nèi)核嶺回歸中我們有談到過支持向量回歸,支持向量分類與支持向量回歸都是只依賴于訓(xùn)練集的子集,因?yàn)闃?gòu)建模型的代價(jià)函數(shù)忽略任何接近于模型預(yù)測的訓(xùn)練數(shù)據(jù)。支持向量回歸也有三種不同的形式:SVR、NuSVR和LinearSVR。

OneClassSVM實(shí)現(xiàn)了一個(gè)用于無監(jiān)督的孤立點(diǎn)檢測。

支持向量機(jī)是個(gè)強(qiáng)大的工具,不過它的計(jì)算和存儲空間要求也會隨著要訓(xùn)練向量的數(shù)目增加而快速增加。?SVM的核心是一個(gè)二次規(guī)劃問題,是將支持向量和訓(xùn)練數(shù)據(jù)的其余部分分離開來。一般情況下復(fù)雜度為 ~ 。

懲罰系數(shù)C的設(shè)置:C定義了你對噪聲的重視程度,如果數(shù)據(jù)中有很多噪聲,我們應(yīng)該減小C,防止模型過擬合。

gamma的設(shè)置:gamma?定義了單一 訓(xùn)練樣本能起到多大的影響,這樣就會導(dǎo)致只有某些訓(xùn)練樣本就能占領(lǐng)主導(dǎo)地位,對于訓(xùn)練集可能效果會很好,但是對于測試集效果很差,即會導(dǎo)致過擬合,降低gamma能有效降低過擬合的風(fēng)險(xiǎn),與C一樣。

推薦一個(gè)網(wǎng)站,作者將SVM講述的很好: SVM入門(一)至(三)Refresh - Jasper's Java Jacal - BlogJava

參考:《Scikit-Learn官方API》

如有錯(cuò)誤,請指正;如有疑問,請留言。

北大青鳥java培訓(xùn):人工智能開發(fā)機(jī)器學(xué)習(xí)的常用算法?

我們在學(xué)習(xí)人工智能以及智能AI技術(shù)的時(shí)候曾經(jīng)給大家介紹過不同的機(jī)器學(xué)習(xí)的方法,而今天我們就著重介紹一下,關(guān)于機(jī)器學(xué)習(xí)的常用算法都有哪些類型。

支持向量機(jī)是什么?支持向量機(jī)是一種有監(jiān)督的機(jī)器學(xué)習(xí)算法,可以用于分類或回歸問題。

它使用一種稱為核技巧的技術(shù)來轉(zhuǎn)換數(shù)據(jù),然后根據(jù)這些轉(zhuǎn)換在可能的輸出之間找到一個(gè)邊界。

簡單地說,它做一些非常復(fù)雜的數(shù)據(jù)轉(zhuǎn)換,然后根據(jù)定義的標(biāo)簽或輸出來劃分?jǐn)?shù)據(jù)。

那么是什么讓它如此偉大呢?支持向量機(jī)既能進(jìn)行分類又能進(jìn)行回歸。

在本文中,我將重點(diǎn)介紹如何使用SVM進(jìn)行分類。

我將特別關(guān)注非線性支持向量機(jī),或者說是使用非線性核的支持向量機(jī)。

非線性支持向量機(jī)意味著算法計(jì)算的邊界不一定是直線。

好處是您可以捕獲數(shù)據(jù)點(diǎn)之間更復(fù)雜的關(guān)系,而不必自己做困難的轉(zhuǎn)換。

缺點(diǎn)是訓(xùn)練時(shí)間更長,因?yàn)樗枰嗟挠?jì)算。

那么核技巧是什么?核技巧對你獲得的數(shù)據(jù)進(jìn)行轉(zhuǎn)換。

有一些很好的特性,你認(rèn)為可以用來做一個(gè)很好的分類器,然后出來一些你不再認(rèn)識的數(shù)據(jù)。

這有點(diǎn)像解開一條DNA鏈。

你從這個(gè)看起來很難看的數(shù)據(jù)向量開始,在通過核技巧之后,它會被解開并自我復(fù)合,直到它現(xiàn)在是一個(gè)更大的數(shù)據(jù)集,通過查看電子表格無法理解。

但是這里有魔力,在擴(kuò)展數(shù)據(jù)集時(shí),你的類之間現(xiàn)在有更明顯的界限,SVM算法能夠計(jì)算出更加優(yōu)化的超平面。

接下來,假設(shè)你是一個(gè)農(nóng)民,你有一個(gè)問題-你需要設(shè)置一個(gè)圍欄,以保護(hù)你的奶牛免受狼的攻擊。

但是你在哪里建造籬笆?好吧,如果你是一個(gè)真正的數(shù)據(jù)驅(qū)動農(nóng)民,你可以做的一件事就是建立一個(gè)基于你牧場中奶牛和狼的位置的分類器。

陜西北大青鳥建議通過幾種不同類型的分類器,我們看到SVM在從狼群中分離你的奶牛方面做得很好。

我認(rèn)為這些圖也很好地說明了使用非線性分類器的好處。

您可以看到邏輯和決策樹模型都只使用直線。

向量b能由向量組A線性表示 滿足什么條件才能使何時(shí)表示式唯一?

表示唯一即需要A中的向量不能相互表示,也就是A中的向量線性無關(guān)時(shí),由A中向量表示成b時(shí)表示方法唯一。

條件:等價(jià)于AX = b這個(gè)方程有解。要理解一個(gè)問題,矩陣A實(shí)際上就是列向量組構(gòu)成的,它與一個(gè)X向量相乘,得到的就是另外一個(gè)向量。也就說,這個(gè)向量可以被向量組A線性表示。

向量組個(gè)該向量組成的矩陣的秩等于或小于向量組中向量的個(gè)數(shù),取自定理:若向量組α1,α2...αn線性無關(guān),且α1,α2...αn,β線性相關(guān),則β可由這個(gè)向量組α線性表出,且表示法唯一。

擴(kuò)展資料:

注:

1、等價(jià)向量組具有傳遞性、對稱性及反身性。但向量個(gè)數(shù)可以不一樣,線性相關(guān)性也可以不一樣。

2、任一向量組和它的極大無關(guān)組等價(jià)。

3、向量組的任意兩個(gè)極大無關(guān)組等價(jià)。

4、兩個(gè)等價(jià)的線性無關(guān)的向量組所含向量的個(gè)數(shù)相同。

5、等價(jià)的向量組具有相同的秩,但秩相同的向量組不一定等價(jià)。

6、如果向量組A可由向量組B線性表示,且R(A)=R(B),則A與B等價(jià)。

參考資料來源:百度百科-等價(jià)向量組

如何使用Java Weka開源項(xiàng)目,實(shí)現(xiàn)J48決策樹、支持向量機(jī)算法,在10個(gè)UCI數(shù)據(jù)集上對這兩個(gè)算法進(jìn)行性能?

public?static?void?Regular()?throws?Exception?{

File?inputfile?=?new?File("F:\\weka\\eucalyptus_Train.arff");

ArffLoader?loader?=?new?ArffLoader();

loader.setFile(inputfile);

Instances?insTrain?=?loader.getDataSet();

insTrain.setClassIndex(insTrain.numAttributes()-1);

inputfile?=?new?File("F:\\weka\\eucalyptus_Test.arff");

loader.setFile(inputfile);

Instances?insTest?=?loader.getDataSet();

insTest.setClassIndex(insTest.numAttributes()-1);

double?sum?=?insTest.numInstances();

int?right?=?0;

Classifier?clas?=?new?J48();

//Classifier?clas?=?new?weka.classifiers.bayes.BayesNet();

clas.buildClassifier(insTrain);

for(int?i?=?0;?i??sum;?i++)?{

if(clas.classifyInstance(insTest.instance(i))?==?insTest.instance(i).classValue())?{

right++;

}

System.out.println(clas.classifyInstance(insTest.instance(i))+"?: "+insTest.instance(i).classValue());

}

System.out.println("分類準(zhǔn)確率:"+right/sum);

}

svm的話,要用一個(gè)wlsvm的包。 代碼是一樣的,就是Classifier class= new J48()這里要用svm的實(shí)例


新聞標(biāo)題:支撐矢量機(jī)java代碼,支撐矢量機(jī)java代碼
分享鏈接:http://weahome.cn/article/dsgpejg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部