python與機器學習入門(7)SVM與核函數

python與機器學習入門(7)SVM與核函數

來自專欄 python與機器學習入門

1.SVM介紹

是一個類似於邏輯回歸的方法,用於對不同因素影響的某個結果的分類。

但邏輯回歸主要採用的是sigmoid函數,SVM有自己常用的核函數:linear線性核、rbf徑向基、poly多項式

比方說,要對一堆香蕉和黃瓜進行分類~~~

首先要明確的是,我們常見的香蕉為黃色,黃瓜為綠色(為什麼不叫綠瓜??)。但是香蕉有綠色的,黃瓜也有黃色的???

好吧。這是我搜的,真的是巨丑!!!

我們採集香蕉和黃瓜的各項特徵信息:氣味,顏色,重量,長度………彙集成特徵點,利用linear線性的分類器進行分類。如下圖:

紅色的是香蕉,綠色的黃瓜,能夠看出來,分類的依據是兩類圖中的兩個點決定的,也就是兩點連線的中垂線!

而且將這條線沿著垂直兩點之間的連線移動,會發現,分類的結果並不會改變。這就是SVM的特點:是依賴於特徵點當中的最特殊的點進行分類的。

這一部分的python實現與邏輯回歸非常相似,源碼與數據集可參考

邏輯回歸介紹

2.kernel核函數

  1. linear

    簡單的線性核函數,上文提到的香蕉和黃瓜的分類就是線性核函數的應用

    主要應用於線性可分的情況
  2. rbf

    高斯核函數,可以實現高維投射

就好比這樣的分類特徵點,用線性的不管怎麼分,結果都是很不理想的,這時候用rbf從圖中的二維空間投射到三維的。(這裡在投射的時候,經過了一系列的公式上的轉換,不在此贅述)

經過投射之後呢,就變成了下面的這個樣子

  1. 看上去像是被一個超平面分割了,其實應該把這些點看成一個圓錐的大體樣子,兩類之間的分割變成了一個曲面,這個曲面就是rbf擬合的結果了。
  2. poly

    多項式核函數也是可以實現低維到高維的映射,採用的頻率並不是很高

前一個文章:邏輯回歸 中提到的案例的實現,邏輯回歸的結果是:

用rbf核函數重新擬合之後結果更加的準確,誤差也更加的小了

上圖:

from sklearn.svm import SVCclassifier = SVC(kernel = rbf, random_state = 0)classifier.fit(X_train, y_train)

源碼與數據集的下載請移步:

機器學習(7)-SVM與核函數 - CSDN博客?

blog.csdn.net


推薦閱讀:

PyQt5系列教程(10):老闆,這個打一下
人人都愛數據科學家!Python數據科學精華實戰課程系列教程連載 ----長期更新中,敬請關注!
【Python3網路爬蟲開發實戰】7.3-Splash負載均衡配置
5 種使用 Python 代碼輕鬆實現數據可視化的方法
怎樣用 Matlab 寫出優雅的代碼?

TAG:機器學習 | Python | SVM |