欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中使用支持向量機SVM實踐

 更新時間:2017年12月27日 09:07:10   作者:ZHOUYYYY_OEI  
這篇文章主要為大家詳細介紹了Python中使用支持向量機SVM實踐,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在機器學習領域,支持向量機SVM(Support Vector Machine)是一個有監(jiān)督的學習模型,通常用來進行模式識別、分類(異常值檢測)以及回歸分析。

其具有以下特征:

   (1)SVM可以表示為凸優(yōu)化問題,因此可以利用已知的有效算法發(fā)現目標函數的全局最小值。而其他分類方法都采用一種基于貪心學習的策略來搜索假設空間,這種方法一般只能獲得局部最優(yōu)解。

  (2) SVM通過最大化決策邊界的邊緣來實現控制模型的能力。盡管如此,用戶必須提供其他參數,如使用核函數類型和引入松弛變量等。

  (3)SVM一般只能用在二類問題,對于多類問題效果不好。

代碼及詳細解釋(基于sklearn包):

from sklearn import svm
import numpy as np
import matplotlib.pyplot as plt

#準備訓練樣本
x=[[1,8],[3,20],[1,15],[3,35],[5,35],[4,40],[7,80],[6,49]]
y=[1,1,-1,-1,1,-1,-1,1]

##開始訓練
clf=svm.SVC() ##默認參數:kernel='rbf'
clf.fit(x,y)
##根據訓練出的模型繪制樣本點
for i in x:
  res=clf.predict(np.array(i).reshape(1, -1))
  if res > 0:
    plt.scatter(i[0],i[1],c='r',marker='*')
  else :
    plt.scatter(i[0],i[1],c='g',marker='*')

##生成隨機實驗數據(15行2列)
rdm_arr=np.random.randint(1, 15, size=(15,2))
##回執(zhí)實驗數據點
for i in rdm_arr:
  res=clf.predict(np.array(i).reshape(1, -1))
  if res > 0:
    plt.scatter(i[0],i[1],c='r',marker='.')
  else :
    plt.scatter(i[0],i[1],c='g',marker='.')
##顯示繪圖結果
plt.show()

從圖上可以看出,數據明顯被藍色分割線分成了兩類。但是紅色箭頭標示的點例外,所以這也起到了檢測異常值的作用。
上面的代碼中提到了kernel='rbf',這個參數是SVM的核心:核函數

重新整理后的代碼如下:  

from sklearn import svm
import numpy as np
import matplotlib.pyplot as plt

##設置子圖數量
fig, axes = plt.subplots(nrows=2, ncols=2,figsize=(7,7))
ax0, ax1, ax2, ax3 = axes.flatten()

#準備訓練樣本
x=[[1,8],[3,20],[1,15],[3,35],[5,35],[4,40],[7,80],[6,49]]
y=[1,1,-1,-1,1,-1,-1,1]
'''
  說明1:
    核函數(這里簡單介紹了sklearn中svm的四個核函數,還有precomputed及自定義的)
    
  LinearSVC:主要用于線性可分的情形。參數少,速度快,對于一般數據,分類效果已經很理想
  RBF:主要用于線性不可分的情形。參數多,分類結果非常依賴于參數
  polynomial:多項式函數,degree 表示多項式的程度-----支持非線性分類
  Sigmoid:在生物學中常見的S型的函數,也稱為S型生長曲線

  說明2:根據設置的參數不同,得出的分類結果及顯示結果也會不同
  
'''
##設置子圖的標題
titles = ['LinearSVC (linear kernel)', 
     'SVC with polynomial (degree 3) kernel', 
     'SVC with RBF kernel',   ##這個是默認的
     'SVC with Sigmoid kernel']
##生成隨機試驗數據(15行2列)
rdm_arr=np.random.randint(1, 15, size=(15,2))

def drawPoint(ax,clf,tn):
  ##繪制樣本點
  for i in x:
    ax.set_title(titles[tn])
    res=clf.predict(np.array(i).reshape(1, -1))
    if res > 0:
      ax.scatter(i[0],i[1],c='r',marker='*')
    else :
      ax.scatter(i[0],i[1],c='g',marker='*')
   ##繪制實驗點
  for i in rdm_arr:
    res=clf.predict(np.array(i).reshape(1, -1))
    if res > 0:
      ax.scatter(i[0],i[1],c='r',marker='.')
    else :
      ax.scatter(i[0],i[1],c='g',marker='.')

if __name__=="__main__":
  ##選擇核函數
  for n in range(0,4):
    if n==0:
      clf = svm.SVC(kernel='linear').fit(x, y)
      drawPoint(ax0,clf,0)
    elif n==1:
      clf = svm.SVC(kernel='poly', degree=3).fit(x, y)
      drawPoint(ax1,clf,1)
    elif n==2:
      clf= svm.SVC(kernel='rbf').fit(x, y)
      drawPoint(ax2,clf,2)
    else :
      clf= svm.SVC(kernel='sigmoid').fit(x, y)
      drawPoint(ax3,clf,3)
  plt.show()


由于樣本數據的關系,四個核函數得出的結果一致。在實際操作中,應該選擇效果最好的核函數分析。

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

相關文章

  • Python圖片檢索之以圖搜圖

    Python圖片檢索之以圖搜圖

    由于很多論文里面的測試圖片沒有標號,就不能確定它們是Testset數據集中哪幾張圖片.為了能解決這個問題,需要完成以圖片去搜索整個數據集文件目錄的任務.本文有非常詳細的圖文示例,需要的朋友可以參考下
    2021-05-05
  • Python開啟線程,在函數中開線程的實例

    Python開啟線程,在函數中開線程的實例

    今天小編就為大家分享一篇Python開啟線程,在函數中開線程的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python 求某條線上特定x值或y值的點坐標方法

    python 求某條線上特定x值或y值的點坐標方法

    今天小編就為大家分享一篇python 求某條線上特定x值或y值的點坐標方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 詳解Python打包分發(fā)工具setuptools

    詳解Python打包分發(fā)工具setuptools

    這篇文章主要介紹了Python打包分發(fā)工具setuptools的相關知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • python繪制雙Y軸折線圖以及單Y軸雙變量柱狀圖的實例

    python繪制雙Y軸折線圖以及單Y軸雙變量柱狀圖的實例

    今天小編就為大家分享一篇python繪制雙Y軸折線圖以及單Y軸雙變量柱狀圖的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 基于 Django 的手機管理系統實現過程詳解

    基于 Django 的手機管理系統實現過程詳解

    這篇文章主要介紹了基于 Django 的手機管理系統過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • python實現隱馬爾科夫模型HMM

    python實現隱馬爾科夫模型HMM

    這篇文章主要為大家詳細介紹了python實現隱馬爾科夫模型HMM,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 淺談Python類里的__init__方法函數,Python類的構造函數

    淺談Python類里的__init__方法函數,Python類的構造函數

    下面小編就為大家?guī)硪黄獪\談Python類里的__init__方法函數,Python類的構造函數。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • Python生成器generator用法示例

    Python生成器generator用法示例

    這篇文章主要介紹了Python生成器generator用法,結合實例形式分析了Python生成器generator常見操作技巧與相關注意事項,需要的朋友可以參考下
    2018-08-08
  • Django數據庫操作的實例(增刪改查)

    Django數據庫操作的實例(增刪改查)

    下面小編就為大家?guī)硪黄狣jango數據庫操作的實例(增刪改查)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09

最新評論