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

Python 支持向量機(jī)分類器的實(shí)現(xiàn)

 更新時(shí)間:2020年01月15日 09:16:04   作者:小游園  
這篇文章主要介紹了Python 支持向量機(jī)分類器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

支持向量機(jī)(Support Vector Machine, SVM)是一類按監(jiān)督學(xué)習(xí)(supervised learning)方式對數(shù)據(jù)進(jìn)行二元分類的廣義線性分類器(generalized linear classifier),其決策邊界是對學(xué)習(xí)樣本求解的最大邊距超平面(maximum-margin hyperplane)

SVM使用鉸鏈損失函數(shù)(hinge loss)計(jì)算經(jīng)驗(yàn)風(fēng)險(xiǎn)(empirical risk)并在求解系統(tǒng)中加入了正則化項(xiàng)以優(yōu)化結(jié)構(gòu)風(fēng)險(xiǎn)(structural risk),是一個(gè)具有稀疏性和穩(wěn)健性的分類器。SVM可以通過核方法(kernel method)進(jìn)行非線性分類,是常見的核學(xué)習(xí)(kernel learning)方法之一。

SVM被提出于1964年,在二十世紀(jì)90年代后得到快速發(fā)展并衍生出一系列改進(jìn)和擴(kuò)展算法,在人像識別、文本分類等模式識別(pattern recognition)問題中有得到應(yīng)用。

import numpy as np
from scipy import io as spio
from matplotlib import pyplot as plt
from sklearn import svm
 
 
def SVM():
  '''data1——線性分類'''
  data1 = spio.loadmat('data1.mat')
  X = data1['X']
  y = data1['y']
  y = np.ravel(y)
  plot_data(X, y)
 
  model = svm.SVC(C=1.0, kernel='linear').fit(X, y) # 指定核函數(shù)為線性核函數(shù)
  plot_decisionBoundary(X, y, model) # 畫決策邊界
  '''data2——非線性分類'''
  data2 = spio.loadmat('data2.mat')
  X = data2['X']
  y = data2['y']
  y = np.ravel(y)
  plt = plot_data(X, y)
  plt.show()
 
  model = svm.SVC(gamma=100).fit(X, y) # gamma為核函數(shù)的系數(shù),值越大擬合的越好
  plot_decisionBoundary(X, y, model, class_='notLinear') # 畫決策邊界
 
 
# 作圖
def plot_data(X, y):
  plt.figure(figsize=(10, 8))
  pos = np.where(y == 1) # 找到y(tǒng)=1的位置
  neg = np.where(y == 0) # 找到y(tǒng)=0的位置
  p1, = plt.plot(np.ravel(X[pos, 0]), np.ravel(X[pos, 1]), 'ro', markersize=8)
  p2, = plt.plot(np.ravel(X[neg, 0]), np.ravel(X[neg, 1]), 'g^', markersize=8)
  plt.xlabel("X1")
  plt.ylabel("X2")
  plt.legend([p1, p2], ["y==1", "y==0"])
  return plt
 
 
# 畫決策邊界
def plot_decisionBoundary(X, y, model, class_='linear'):
  plt = plot_data(X, y)
 
  # 線性邊界    
  if class_ == 'linear':
    w = model.coef_
    b = model.intercept_
    xp = np.linspace(np.min(X[:, 0]), np.max(X[:, 0]), 100)
    yp = -(w[0, 0] * xp + b) / w[0, 1]
    plt.plot(xp, yp, 'b-', linewidth=2.0)
    plt.show()
  else: # 非線性邊界
    x_1 = np.transpose(np.linspace(np.min(X[:, 0]), np.max(X[:, 0]), 100).reshape(1, -1))
    x_2 = np.transpose(np.linspace(np.min(X[:, 1]), np.max(X[:, 1]), 100).reshape(1, -1))
    X1, X2 = np.meshgrid(x_1, x_2)
    vals = np.zeros(X1.shape)
    for i in range(X1.shape[1]):
      this_X = np.hstack((X1[:, i].reshape(-1, 1), X2[:, i].reshape(-1, 1)))
      vals[:, i] = model.predict(this_X)
 
    plt.contour(X1, X2, vals, [0, 1], color='blue')
    plt.show()
 
 
if __name__ == "__main__":
  SVM()

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文教會你用python連接并簡單操作SQLserver數(shù)據(jù)庫

    一文教會你用python連接并簡單操作SQLserver數(shù)據(jù)庫

    最近要將數(shù)據(jù)寫到數(shù)據(jù)庫里,學(xué)習(xí)了一下如何用Python來操作SQLServer數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于用python連接并簡單操作SQLserver數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Python 馬氏距離求取函數(shù)詳解

    Python 馬氏距離求取函數(shù)詳解

    這篇文章主要為大家介紹了Python 馬氏距離求取函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Python如何獲取文件路徑/目錄

    Python如何獲取文件路徑/目錄

    這篇文章主要介紹了Python如何獲取文件路徑/目錄,幫助大家更好的利用python處理文件,感興趣的朋友可以了解下
    2020-09-09
  • Python上下文管理器全實(shí)例詳解

    Python上下文管理器全實(shí)例詳解

    在本篇文章里小編給大家整理的是關(guān)于Python上下文管理器全實(shí)例解析的知識點(diǎn),需要的朋友們參考下。
    2019-11-11
  • 深入理解 Python 中的多線程 新手必看

    深入理解 Python 中的多線程 新手必看

    你應(yīng)當(dāng)將下邊的例子運(yùn)行多次,以便可以注意到線程是不可預(yù)測的和線程每次運(yùn)行出的不同結(jié)果。聲明:從這里開始忘掉你聽到過的關(guān)于GIL的東西,因?yàn)镚IL不會影響到我想要展示的東西
    2016-11-11
  • opencv形態(tài)學(xué)中的孔洞填充詳細(xì)圖解

    opencv形態(tài)學(xué)中的孔洞填充詳細(xì)圖解

    我們在進(jìn)行圖像分割后,分割結(jié)果有時(shí)會有一些小孔洞,如圖1所示,其中黑白兩色表示兩種不同的類別。一般情況下,這些孔洞屬于錯(cuò)分情況,為了優(yōu)化結(jié)果,我們通常對這些孔洞進(jìn)行填充。今天我們就用python語言基于OpenCV實(shí)現(xiàn)孔洞填充
    2022-10-10
  • Python中turtle庫常用代碼匯總

    Python中turtle庫常用代碼匯總

    Turtle庫是Python語言中一個(gè)很流行的繪制圖像的函數(shù)庫,下面這篇文章主要給大家介紹了關(guān)于Python中turtle庫常用代碼的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Appium自動(dòng)化測試實(shí)現(xiàn)九宮格解鎖

    Appium自動(dòng)化測試實(shí)現(xiàn)九宮格解鎖

    本文主要介紹了Appium自動(dòng)化測試實(shí)現(xiàn)九宮格解鎖,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 解決python繪圖使用subplots出現(xiàn)標(biāo)題重疊的問題

    解決python繪圖使用subplots出現(xiàn)標(biāo)題重疊的問題

    這篇文章主要介紹了python繪圖使用subplots出現(xiàn)標(biāo)題重疊的問題及解決方法,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • pandas如何將dataframe中的NaN替換成None

    pandas如何將dataframe中的NaN替換成None

    這篇文章主要介紹了pandas如何將dataframe中的NaN替換成None問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論