機器學習演算法 支援向量機SVM

2021-08-13 03:49:03 字數 2281 閱讀 2769

在上兩節中,我們講解了機器學習的決策樹和k-近鄰演算法,本節我們講解另外一種分類演算法:支援向量機svm。

svm是迄今為止最好使用的分類器之一,它可以不加修改即可直接使用,從而得到低錯誤率的結果。

【案例背景】

從前有兩個地主,他們都是占山為王的一方霸主。本來各自吃飽自己的飯萬事無憂,可是人心不知足蛇吞象啊,自己總是都想佔對方的一畝三分地,衝突爭吵從來都沒有停歇過。當時的環境就是誰狠這土地就歸誰,但是我們現在想從科學的角度來分析,如何讓他們的地盤均分,畫條邊界線,從此互不干擾呢?

【演示**】

import

numpy as np

import

matplotlib.pylab as plt

from sklearn import

svm

#生成隨機分布的點

np.random.seed(1)

x=np.r_[np.random.randn(20,2)-[2,2],np.random.randn(20,2)+[2,2]]

y=[0]*20+[1]*20

#在圖中畫出隨機分布的點

plt.scatter(x[:,0],x[:,1],c=y,s=80,cmap=plt.cm.paired)

#這裡是svm核心演算法函式

clf=svm.svc(kernel='

linear

')

clf.fit(x,y) #

畫出分割線

w=clf.coef_[0]

a=-w[0]/w[1] #

得到斜率

xx=np.linspace(-5,5)

yy=a*xx-(clf.intercept_[0])/w[1]

plt.plot(xx,yy,'k-

') #

在圖中畫出支援向量的點的兩條直線

b=clf.support_vectors_[0]

yy_down=a*xx+(b[1]-a*b[0])

b=clf.support_vectors_[-1]

yy_up=a*xx+(b[1]-a*b[0])

plt.plot(xx,yy_down,

'k--

')

plt.plot(xx,yy_up,

'k--

')

#將支援向量的點特殊顯示

plt.scatter(clf.support_vectors_[:,0],clf.support_vectors_[:,1],s=100)

#在圖中顯示需要**的點

test_x1, test_y1 = (-3, -3)

test_x2, test_y2 = (0, 5)

plt.scatter([test_x1],[test_y1],s=100)

plt.scatter([test_x2],[test_y2],s=100)

z1 =clf.predict([[test_x1, test_y1]])

z2 =clf.predict([[test_x2, test_y2]])

print('

**結果:

',z1) #

顯示**結果

print('

**結果:

',z2) #

顯示**結果

plt.show()

【執行結果】

**結果: [0]

**結果: [1]

【結果分析】

在上圖中,用了4種顏色的圓點和三條直線,他們分別表示如下:

淺色點:地主1的建築物

紫色點:地主2的建築物

藍色點:地主1和地主2相鄰的關鍵建築物

黃色點:**點1

綠色點:**點2

實體直線:最終的分界線,即楚河漢界的分界線,直線下方是地主1的地盤,直線上方是地主2的地盤。

虛線:關鍵點連成的直線,他們到分界線是等距的。

我們看到**結果,黃點**結果顯示0,表示它在地主1的地盤;綠點**結果顯示1,表示它在地主2的地盤。

當然我們從肉眼也可以判斷本次**結果是對的。

【演算法總結】

1. svm演算法只能劃分兩類物體,當然多類的情況可以轉化為多次兩類進行劃分。

2. svm演算法不僅能劃分線性可分的情況,還可以劃分更加複雜線性不可分的情況,核心思想是:變成高階計算,然後對映到低階,以後有機會再單獨演示這種情況。

機器學習 支援向量機 SVM

svm 方法的基本思想是 定義最優線性超平面,並把尋找最優線性超平面的演算法歸結為求解乙個凸規劃問題。進而基於 mercer 核展開定理,通過非線性對映 把樣本空間對映到乙個高維乃至於無窮維的特徵空間 hilbert 空間 使在特徵空間中可以應用線性學習機的方法解決樣本空間中的高度非線性分類和回歸等...

機器學習 支援向量機SVM

svm是一種監督學習演算法,主要用於分類 回歸 異常值檢測。目前應用於文字分類 手寫文字識別 影象分類 生物序列分析。支援向量機是一種通過某種非線性對映,把低維的非線性可分轉化為高維的線性可分,在高維空間進行線性分析的演算法。支援向量機 svm,support vector machine 是根據統...

機器學習 支援向量機SVM

通俗詳見 要明白什麼是svm,便得從分類說起。分類作為資料探勘領域中一項非常重要的任務,它的目的是學會乙個分類函式或分類模型 或者叫做分類器 而支援向量機本身便是一種監督式學習的方法 至於具體什麼是監督學習與非監督學習,請參見此系列machine l data mining第一篇 它廣泛的應用於統計...