『壹』 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)#輸出分類概率的對數
『貳』 如何利用python使用libsvm
包解壓C盤:C:\libsvm-三.一吧二. 要用libsvm自帶腳本grid.pyeasy.py,需要官中國載繪圖工具gnuplot,解壓c盤.進入c:\libsvm\tools目錄用文本編輯器(記事本edit都)修改grid.pyeasy.py兩文件找其關於gnuplot路徑項根據實際路徑進行修改並保存 python與libsvm連接(參考SVM習筆記(二)LIBSVMpython使用) 一.打IDLE(pythonGUI)輸入>>>importsys>>>sys.version 二.python三二位現字元: (default,Apr一0二0一二,二三:三一:二陸)[MSCv.一500三二bit(Intel)]』 候LIBSVMpython介面設置液此非簡單libsvm-三.一陸文件夾windows文件夾找態鏈接庫libsvm.dll其添加系統目錄`C:\WINDOWS\system三二\』即python使用libsvm wk_ad_begin({pid : 二一});wk_ad_after(二一, function(){$('.ad-hidden').hide();}, function(){$('.ad-hidden').show();}); 三.執行例 importos os.chdir('C:\libsvm-三.一吧\python')#請根據實際路徑修改 辯盯fromsvmutilimport* y,x=svm_read_problem('../heart_scale')#讀取自帶數據 m=svm_train(y[:二00],x[:二00],'-c四') p_label,p_acc,p_val=svm_predict(y[二00:],x[二00:],m) ##現結應該確安裝optimizationfinished,#iter=二5漆nu=0.三5一一陸一 obj=-二二5.陸二吧9吧四,rho=0.陸三陸一一0nSV=9一,nBSV=四攜埋和9 TotalnSV=9一 Accuracy=吧四.二吧5漆%(59/漆0)(classification
『叄』 如何利用 Python 實現 SVM 模型
我先直觀地闡述我對SVM的理解,這其中不會涉及數學公式,然後給出Python代碼。
SVM是一種二分類模型,處理的數據可以分為三類:
線性可分,通過硬間隔最大化,學習線性分類器
近似線性可分,通過軟間隔最大化,學習線性分類器
線性不可分,通過核函數以及軟間隔最大化,學習非線性分類器
線性分類器,在平面上對應直線;非線性分類器,在平面上對應曲線。
硬間隔對應於線性可分數據集,可以將所有樣本正確分類,也正因為如此,受雜訊樣本影響很大,不推薦。
軟間隔對應於通常情況下的數據集(近似線性可分或線性不可分),允許一些超平面附近的樣本被錯誤分類,從而提升了泛化性能。
如下圖:
我們可以看到,當支持向量太少,可能會得到很差的決策邊界。如果支持向量太多,就相當於每次都利用整個數據集進行分類,類似KNN。『肆』 python的一個SVM多分類例子
一個SVM的簡單例子可以從中窺探奧秘,大家可以更改X的數值,更改Y 的標簽名
『伍』 如何利用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)
『陸』 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)
『柒』 如何利用python使用libsvm
准備工具
libsvm軟體包;
電腦;
步驟操作
把包解壓在C盤之中,如:C:libsvm-3.18;
用libsvm自帶的腳本grid.py和easy.py,需要去官網下載繪圖工具gnuplot,解壓到c盤;
進入c:libsvm ools目錄下,用文本編輯器(記事本,edit都可以)修改grid.py和easy.py兩個文件,找到其中關於gnuplot路徑的那項,根據實際路徑進行修改,並保存;
『捌』 求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模型並得到分類結果。
『玖』 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。