国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python中的支持向量機SVM的使用(附實例代碼)

Python中的支持向量機SVM的使用(附實例代碼)

2021-07-22 14:27陸瑤 Python

這篇文章主要介紹了Python中的支持向量機SVM的使用(附實例代碼),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

除了在Matlab中使用PRTools工具箱中的svm算法,Python中一樣可以使用支持向量機做分類。因為Python中的sklearn庫也集成了SVM算法,本文的運行環境是Pycharm。

一、導入sklearn算法包

Scikit-Learn庫已經實現了所有基本機器學習的算法,具體使用詳見官方文檔說明:http://scikit-learn.org/stable/auto_examples/index.html

skleran中集成了許多算法,其導入包的方式如下所示,

邏輯回歸:from sklearn.linear_model import LogisticRegression

樸素貝葉斯:from sklearn.naive_bayes import GaussianNB

K-近鄰:from sklearn.neighbors import KNeighborsClassifier

決策樹:from sklearn.tree import DecisionTreeClassifier

支持向量機:from sklearn import svm

二、sklearn中svc的使用

(1)使用numpy中的loadtxt讀入數據文件

loadtxt()的使用方法:

Python中的支持向量機SVM的使用(附實例代碼)

fname:文件路徑。eg:C:/Dataset/iris.txt。

dtype:數據類型。eg:float、str等。

delimiter:分隔符。eg:‘,'。

converters:將數據列與轉換函數進行映射的字典。eg:{1:fun},含義是將第2列對應轉換函數進行轉換。

usecols:選取數據的列。

以Iris蘭花數據集為例子:

由于從UCI數據庫中下載的Iris原始數據集的樣子是這樣的,前四列為特征列,第五列為類別列,分別有三種類別Iris-setosa, Iris-versicolor, Iris-virginica。   

Python中的支持向量機SVM的使用(附實例代碼)

當使用numpy中的loadtxt函數導入該數據集時,假設數據類型dtype為浮點型,但是很明顯第五列的數據類型并不是浮點型。

因此我們要額外做一個工作,即通過loadtxt()函數中的converters參數將第五列通過轉換函數映射成浮點類型的數據。

首先,我們要寫出一個轉換函數:

  1. def iris_type(s):
  2. it = {'Iris-setosa': 0, 'Iris-versicolor': 1, 'Iris-virginica': 2}
  3. return it[s]

接下來讀入數據,converters={4: iris_type}中“4”指的是第5列:

  1. path = u'D:/f盤/python/學習/iris.data' # 數據文件路徑
  2. data = np.loadtxt(path, dtype=float, delimiter=',', converters={4: iris_type})

讀入結果:

Python中的支持向量機SVM的使用(附實例代碼)

(2)將Iris分為訓練集與測試集

  1. x, y = np.split(data, (4,), axis=1)
  2. x = x[:, :2]
  3. x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=1, train_size=0.6)

1.split(數據,分割位置,軸=1(水平分割) or 0(垂直分割))。

2.x = x[:, :2]是為方便后期畫圖更直觀,故只取了前兩列特征值向量訓練。

3. sklearn.model_selection.train_test_split隨機劃分訓練集與測試集。train_test_split(train_data,train_target,test_size=數字, random_state=0)

參數解釋:

  • train_data:所要劃分的樣本特征集
  • train_target:所要劃分的樣本結果
  • test_size:樣本占比,如果是整數的話就是樣本的數量
  • random_state:是隨機數的種子。

隨機數種子:其實就是該組隨機數的編號,在需要重復試驗的時候,保證得到一組一樣的隨機數。比如你每次都填1,其他參數一樣的情況下你得到的隨機數組是一樣的。但填0或不填,每次都會不一樣。隨機數的產生取決于種子,隨機數和種子之間的關系遵從以下兩個規則:種子不同,產生不同的隨機數;種子相同,即使實例不同也產生相同的隨機數。

(3)訓練svm分類器

  1. # clf = svm.SVC(C=0.1, kernel='linear', decision_function_shape='ovr')
  2. clf = svm.SVC(C=0.8, kernel='rbf', gamma=20, decision_function_shape='ovr')
  3. clf.fit(x_train, y_train.ravel())

kernel='linear'時,為線性核,C越大分類效果越好,但有可能會過擬合(defaul C=1)。

kernel='rbf'時(default),為高斯核,gamma值越小,分類界面越連續;gamma值越大,分類界面越“散”,分類效果越好,但有可能會過擬合。

decision_function_shape='ovr'時,為one v rest,即一個類別與其他類別進行劃分,

decision_function_shape='ovo'時,為one v one,即將類別兩兩之間進行劃分,用二分類的方法模擬多分類的結果。

(4)計算svc分類器的準確率

  1. print clf.score(x_train, y_train) # 精度
  2. y_hat = clf.predict(x_train)
  3. show_accuracy(y_hat, y_train, '訓練集')
  4. print clf.score(x_test, y_test)
  5. y_hat = clf.predict(x_test)
  6. show_accuracy(y_hat, y_test, '測試集')

結果為:

Python中的支持向量機SVM的使用(附實例代碼)

如果想查看決策函數,可以通過decision_function()實現

  1. print 'decision_function:\n', clf.decision_function(x_train)
  2. print '\npredict:\n', clf.predict(x_train)

結果為:

Python中的支持向量機SVM的使用(附實例代碼)Python中的支持向量機SVM的使用(附實例代碼)

decision_function中每一列的值代表距離各類別的距離。

(5)繪制圖像

1.確定坐標軸范圍,x,y軸分別表示兩個特征

  1. x1_min, x1_max = x[:, 0].min(), x[:, 0].max() # 第0列的范圍
  2. x2_min, x2_max = x[:, 1].min(), x[:, 1].max() # 第1列的范圍
  3. x1, x2 = np.mgrid[x1_min:x1_max:200j, x2_min:x2_max:200j] # 生成網格采樣點
  4. grid_test = np.stack((x1.flat, x2.flat), axis=1) # 測試點
  5. # print 'grid_test = \n', grid_testgrid_hat = clf.predict(grid_test) # 預測分類值grid_hat = grid_hat.reshape(x1.shape) # 使之與輸入的形狀相同

這里用到了mgrid()函數,該函數的作用這里簡單介紹一下:

假設假設目標函數F(x,y)=x+y。x軸范圍1~3,y軸范圍4~6,當繪制圖像時主要分四步進行:

【step1:x擴展】(朝右擴展):

[1 1 1]

   [2 2 2]

   [3 3 3]

【step2:y擴展】(朝下擴展):

   [4 5 6]

   [4 5 6]

   [4 5 6]

【step3:定位(xi,yi)】:

   [(1,4) (1,5) (1,6)]

   [(2,4) (2,5) (2,6)]

   [(3,4) (3,5) (3,6)]

【step4:將(xi,yi)代入F(x,y)=x+y】

因此這里x1, x2 = np.mgrid[x1_min:x1_max:200j, x2_min:x2_max:200j]后的結果為:

Python中的支持向量機SVM的使用(附實例代碼)

再通過stack()函數,axis=1,生成測試點

Python中的支持向量機SVM的使用(附實例代碼)

2.指定默認字體

  1. mpl.rcParams['font.sans-serif'] = [u'SimHei']
  2. mpl.rcParams['axes.unicode_minus'] = False

3.繪制

  1. cm_light = mpl.colors.ListedColormap(['#A0FFA0', '#FFA0A0', '#A0A0FF'])
  2.  
  3. cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])
  4.  
  5. plt.pcolormesh(x1, x2, grid_hat, cmap=cm_light)
  6.  
  7. plt.scatter(x[:, 0], x[:, 1], c=y, edgecolors='k', s=50, cmap=cm_dark) # 樣本
  8.  
  9. plt.scatter(x_test[:, 0], x_test[:, 1], s=120, facecolors='none', zorder=10) # 圈中測試集樣本
  10.  
  11. plt.xlabel(u'花萼長度', fontsize=13)
  12.  
  13. plt.ylabel(u'花萼寬度', fontsize=13)
  14.  
  15. plt.xlim(x1_min, x1_max)
  16.  
  17. plt.ylim(x2_min, x2_max)
  18.  
  19. plt.title(u'鳶尾花SVM二特征分類', fontsize=15)
  20.  
  21. # plt.grid()
  22.  
  23. plt.show()

pcolormesh(x,y,z,cmap)這里參數代入x1,x2,grid_hat,cmap=cm_light繪制的是背景。

scatter中edgecolors是指描繪點的邊緣色彩,s指描繪點的大小,cmap指點的顏色。

xlim指圖的邊界。

最終結果為:

Python中的支持向量機SVM的使用(附實例代碼)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持我們。

原文鏈接:https://www.cnblogs.com/luyaoblog/p/6775342.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 精品乱子伦一区二区三区 | 玖玖综合网 | 国产黄色av| 国产免费av在线 | 色欧美片视频在线观看 | 日韩欧美在线视频 | 天天天干夜夜夜操 | 国产精品网站在线观看 | 亚洲精品区 | 亚洲精品久久久久久久久久久 | 五月婷婷综合网 | 先锋资源网av | 国产精品一区二区在线观看 | 国产亚洲精品久久久久久 | 中文字幕视频二区 | 黄色天堂| 黄色一级视频免费看 | 精品一区二区三区中文字幕 | 日韩欧美第一页 | 欧美日韩国产精品一区 | 亚洲专区国产精品 | 亚洲91| 羞羞视频免费观看 | 国产黄色av| 亚洲高清视频在线观看 | 国产三级一区 | 99亚洲伊人久久精品影院红桃 | 亚洲欧美第一页 | 久久久国产精品 | 欧美国产精品一区二区三区 | 精品视频一区在线观看 | 特黄视频免费观看 | 黄色免费毛片 | 一区二区视频 | 精品国产乱码久久久久久丨区2区 | |级毛片| 中文字幕超清在线免费 | 国产一区网站 | 欧美区在线 | 国产精品3区 | 免费a视频在线观看 |