導航:首頁 > 編程語言 > python的svm怎麼用

python的svm怎麼用

發布時間:2023-06-14 21:47:10

1. 如何利用python使用libsvm

把包解壓在C盤之中,如:C:\libsvm-3.182.
因為要用libsvm自帶的腳本grid.py和easy.py,需要去官網下載繪圖工具gnuplot,解壓到c盤.進入c:\libsvm\tools目錄下,用文本編輯器(記事本,edit都可以)修改grid.py和easy.py兩個文件,找到其中關於gnuplot路徑的那項,根據實際路徑進行修改,並保存
python與libsvm的連接(參考SVM學習筆記(2)LIBSVM在python下的使用)

1.打開IDLE(pythonGUI),輸入>>>importsys>>>sys.version
2.如果你的python是32位,將出現如下字元:
(default,Apr102012,23:31:26)[MSCv.150032bit(Intel)]』
這個時候LIBSVM的python介面設置將非常簡單。在libsvm-3.16文件夾下的windows文件夾中找到動態鏈接庫libsvm.dll,將其添加到系統目錄,如`C:\WINDOWS\system32\』,即可在python中使用libsvm
wk_ad_begin({pid : 21});wk_ad_after(21, function(){$('.ad-hidden').hide();}, function(){$('.ad-hidden').show();});
3.執行一個小例子

importos
os.chdir('C:\libsvm-3.18\python')#請根據實際路徑修改
fromsvmutilimport*
y,x=svm_read_problem('../heart_scale')#讀取自帶數據
m=svm_train(y[:200],x[:200],'-c4')
p_label,p_acc,p_val=svm_predict(y[200:],x[200:],m)
##出現如下結果,應該是正確安裝了optimizationfinished,#iter=257nu=0.351161
obj=-225.628984,rho=0.636110nSV=91,nBSV=49
TotalnSV=91

Accuracy=84.2857%(59/70)(classification)

2. 求python支持向量機數據設置標簽代碼

以下是使用Python中的Scikit-learn庫實現支持向量機(SVM)模型的盯寬數據設置標簽代碼示例:

from sklearn import svm

# 假設有以下三個樣本的數據:

X = [[0, 0], [1, 1], [2, 2]]

y = [0, 1, 1] # 對應每個數據點的標簽,凱悔0表示負樣本,1表示正樣本

# 創建SVM模型

clf = svm.SVC()

# 將數據集(X)和標簽(y)作為訓練數據來訓練模型

clf.fit(X, y)

上述代碼中,X是一個二維數組,每個元素都代表一個數據點的特徵值,y是一凱孫亮個一維數組,每個元素都代表對應數據點的標簽。通過將X和y作為訓練數據,可以訓練SVM模型並得到分類結果。

3. Python sklearn里的svm.SVC怎麼輸出分類概率

fromsklearn.svmimportSVC
model=SVC()
model.fit(X_train,y_train)
model.predict(X_test)#輸出類別
model.predict_proba(X_test)#輸出分類概率
model.predict_log_proba(X_test)#輸出分類概率的對數

4. python怎麼實現opencv3 svm訓練模型保存和載入

在做模型訓練的時候,尤其是在訓練集上做交叉驗證,通常想要將模型保存下來,然後放到獨立的測試集上測試,下面介紹的是python中訓練模型的保存和再使用。
scikit-learn已經有了模型持久化的操作,導入joblib即可
from sklearn.externals import joblib
模型保存
>>> os.chdir("workspace/model_save")>>> from sklearn import svm>>> X = [[0, 0], [1, 1]]>>> y = [0, 1]>>> clf = svm.SVC()>>> clf.fit(X, y) >>> clf.fit(train_X,train_y)>>> joblib.mp(clf, "train_model.m")
通過joblib的mp可以將模型保存到本地,clf是訓練的分類器
模型從本地調回
>>> clf = joblib.load("train_model.m")
通過joblib的load方法,載入保存的模型。
然後就可以在測試集上測試了
clf.predit(test_X,test_y)

5. python svm 怎麼訓練模型

支持向量機SVM(Support Vector Machine)是有監督的分類預測模型,本篇文章使用機器學習庫scikit-learn中的手寫數字數據集介紹使用Python對SVM模型進行訓練並對手寫數字進行識別的過程。

准備工作

手寫數字識別的原理是將數字的圖片分割為8X8的灰度值矩陣,將這64個灰度值作為每個數字的訓練集對模型進行訓練。手寫數字所對應的真實數字作為分類結果。在機器學習sklearn庫中已經包含了不同數字的8X8灰度值矩陣,因此我們首先導入sklearn庫自帶的datasets數據集。然後是交叉驗證庫,SVM分類演算法庫,繪制圖表庫等。

12345678910#導入自帶數據集from sklearn import datasets#導入交叉驗證庫from sklearn import cross_validation#導入SVM分類演算法庫from sklearn import svm#導入圖表庫import matplotlib.pyplot as plt#生成預測結果准確率的混淆矩陣from sklearn import metrics

讀取並查看數字矩陣

從sklearn庫自帶的datasets數據集中讀取數字的8X8矩陣信息並賦值給digits。

12#讀取自帶數據集並賦值給digitsdigits = datasets.load_digits()

查看其中的數字9可以發現,手寫的數字9以64個灰度值保存。從下面的8×8矩陣中很難看出這是數字9。

12#查看數據集中數字9的矩陣digits.data[9]

以灰度值的方式輸出手寫數字9的圖像,可以看出個大概輪廓。這就是經過切割並以灰度保存的手寫數字9。它所對應的64個灰度值就是模型的訓練集,而真實的數字9是目標分類。我們的模型所要做的就是在已知64個灰度值與每個數字對應關系的情況下,通過對模型進行訓練來對新的手寫數字對應的真實數字進行分類。

1234#繪制圖表查看數據集中數字9的圖像plt.imshow(digits.images[9], cmap=plt.cm.gray_r, interpolation='nearest')plt.title('digits.target[9]')plt.show()


從混淆矩陣中可以看到,大部分的數字SVM的分類和預測都是正確的,但也有個別的數字分類錯誤,例如真實的數字2,SVM模型有一次錯誤的分類為1,還有一次錯誤分類為7。



6. 如何利用 Python 實現 SVM 模型

我先直觀地闡述我對SVM的理解,這其中不會涉及數學公式,然後給出Python代碼。

SVM是一種二分類模型,處理的數據可以分為三類:

7. 如何利用python使用libsvm

一:libsvm包下載與使用:

LIBSVM是台灣大學林智仁(Lin Chih-Jen)副教授等開發設計的一個簡單、易於使用和快速有效的SVM模式識別與回歸的軟體包,他不但提供了編譯好的可在Windows系列系統的老或執行文件,還提供了源代碼,方便改進.
把包解壓在C盤之中,如:C:\libsvm-3.18
2.
因為要用libsvm自帶的腳本grid.py和easy.py,需要去官網下載繪圖工具gnuplot,解壓到c盤
3.
進入c:\libsvm\tools目錄下,用文本編輯器(記事本,edit都可以)修改grid.py和easy.py兩個文件,找到其中關於gnuplot路徑的那項,根據實際路徑進行修改,並保存
4python與libsvm的連接(參考SVM學習筆記(2)LIBSVM在python下的使用 )

a.打早告開IDLE(python GUI),輸入
>>>import sys
>>>sys.version
如果你的python是32位,將出現如下字元:
『2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)]』
這個時候LIBSVM的python介面設置將非常簡單。在libsvm-3.16文件夾下的windows文件夾中找到動態鏈接庫libsvm.dll,將其添加到系統目錄,如`C:\WINDOWS\system32\』,即可在python中使用libsvm
b.如果你是64位的請參考文獻,請參考上述連接。

5.執行一個小例子

import os

os.chdir('C:\libsvm-3.18\python')#請根據實際路徑修改

from svmutil import *

y, x = svm_read_problem('../heart_scale')#讀取自帶數據

m = svm_train(y[:200], x[:200], '-c 4')

p_label, p_acc, p_val = svm_predict(y[200:], x[200:], m)

##出現如下結果,應該是正確安裝了
optimization finished, #iter = 257
nu = 0.351161
obj = -225.628984, rho = 0.636110
nSV = 91, nBSV = 49
Total nSV = 91
Accuracy = 84.2857% (59/70) (classification)

二幾個簡單的例子
從陸含明下載實驗數據集。並且將數據集拷貝到C:\libsvm-3.18\windows下(因為之後我們需要利用該文件夾下的其他文件,這樣比較方便,當然之後你用絕對地址也可以了)
建立一個py文件,寫下如下代碼:
例1:

import os

os.chdir('C:\libsvm-3.18\windows')#設定路徑
from svmutil import *

y, x = svm_read_problem('train.1.txt')#讀入訓練數據
yt, xt = svm_read_problem('test.1.txt')#訓練測試數據
m = svm_train(y, x )#訓練
svm_predict(yt,xt,m)#測試

執行上述代碼,精度為:Accuracy = 66.925% (2677/4000) (classification)

常用介面
svm_train() : train an SVM model#訓練
svm_predict() : predict testing data#預測
svm_read_problem() : read the data from a LIBSVM-format file.#讀取libsvm格式的數據
svm_load_model() : load a LIBSVM model.
svm_save_model() : save model to a file.
evaluations() : evaluate prediction results.
- Function: svm_train#三種訓練寫法
There are three ways to call svm_train()
>>> model = svm_train(y, x [, 'training_options'])
>>> model = svm_train(prob [, 'training_options'])
>>> model = svm_train(prob, param)

有關參數的設置(read me 文件夾中有詳細說明):
Usage: svm-train [options] training_set_file [model_file]
options:
-s svm_type : set type of SVM (default 0)#選擇哪一種svm
0 -- C-SVC (multi-class classification)
1 -- nu-SVC (multi-class classification)
2 -- one-class SVM
3 -- epsilon-SVR (regression)
4 -- nu-SVR (regression)
-t kernel_type : set type of kernel function (default 2)#是否用kernel trick
0 -- linear: u'*v
1 -- polynomial: (gamma*u'*v + coef0)^degree
2 -- radial basis function: exp(-gamma*|u-v|^2)
3 -- sigmoid: tanh(gamma*u'*v + coef0)
4 -- precomputed kernel (kernel values in training_set_file)
-d degree : set degree in kernel function (default 3)
-g gamma : set gamma in kernel function (default 1/num_features)
-r coef0 : set coef0 in kernel function (default 0)
-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)
-n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)
-p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)
-m cachesize : set cache memory size in MB (default 100)
-e epsilon : set tolerance of termination criterion (default 0.001)
-h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1)
-b probability_estimates : whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)
-wi weight : set the parameter C of class i to weight*C, for C-SVC (default 1)
-v n: n-fold cross validation mode
-q : quiet mode (no outputs)

三提高預測的准確率:
通過一定的過程,可以提高預測的准確率(在文獻2中有詳細介紹):
a.轉換數據為libsvm可用形式.(可以通過下載的數據了解格式)
b.進行一個簡單的尺度變換
c.利用RBF kernel,利用cross-validation來查找最佳的參數 C 和 r
d.利用最佳參數C 和 r ,來訓練整個數據集
e.測試

再看例子1:
1.進入cmd模式下,輸入如下代碼,將現有數據進行適度變換,生成變換後的數據文件train.1.scale.txt

參數說明:
-l 變換後的下限
-u 變換後的上限
-s 參考上文

2執行以下代碼

import os

os.chdir('C:\libsvm-3.18\windows')#設定路徑
from svmutil import *

y, x = svm_read_problem('train.1.scale.txt')#讀入訓練數據
yt, xt = svm_read_problem('test.1.scale.txt')#訓練測試數據
m = svm_train(y, x )#訓練
svm_predict(yt,xt,m)#測試

精確度為Accuracy = 95.6% (3824/4000) (classification)。
可見我們只是做了簡單的尺度變換後,預測的正確率大大提升了。

3通過選擇最優參數,再次提高預測的准確率:(需要把tools文件下的grid.py拷貝到'C:\libsvm-3.18\windows'下)

import os
os.chdir('C:\libsvm-3.18\windows')#設定路徑
from svmutil import *
from grid import *

rate, param = find_parameters('train.1.scale.txt', '-log2c -3,3,1 -log2g -3,3,1')

y, x = svm_read_problem('train.1.scale.txt')#讀入訓練數據
yt, xt = svm_read_problem('test.1.scale.txt')#訓練測試數據
m = svm_train(y, x ,'-c 2 -g 4')#訓練
p_label,p_acc,p_vals=svm_predict(yt,xt,m)#測試

執行上面的程序,find_parmaters函數,可以找到對應訓練數據較好的參數。後面的log2c,log2g分別設置C和r的搜索范圍。搜索機制是以2為底指數搜索,如 –log2c –3 , 3,1 就是參數C,從2^-3,2^-2,2^-1…搜索到2^3.
搜索到較好參數後,在訓練的時候加上參數的設置。
另外,讀者可以自己試試數據集2,3.

閱讀全文

與python的svm怎麼用相關的資料

熱點內容
如何看漫威漫畫app 瀏覽:789
安卓手機如何按拼音排布app 瀏覽:721
java中exceptionin 瀏覽:882
java131 瀏覽:868
學英語不登錄的app哪個最好 瀏覽:299
安卓的後台運行怎麼設置 瀏覽:135
如何撰寫論文摘要以及編譯sci 瀏覽:416
安卓如何使用推特貼吧 瀏覽:429
怎樣避免程序員入獄 瀏覽:856
蘋果方塊消除安卓叫什麼 瀏覽:535
安卓世界征服者2怎麼聯機 瀏覽:297
國企招的程序員 瀏覽:969
哪個app可以看watch 瀏覽:518
dns備用什麼伺服器 瀏覽:1002
中達優控觸摸屏編譯失敗 瀏覽:80
上海科納壓縮機 瀏覽:680
python工時系統 瀏覽:551
查好友ip命令 瀏覽:118
通達信python量化交易 瀏覽:506
cnc編程工程師自我評價 瀏覽:133