python與機器學習入門(7)SVM與核函數
來自專欄 python與機器學習入門
1.SVM介紹
是一個類似於邏輯回歸的方法,用於對不同因素影響的某個結果的分類。
但邏輯回歸主要採用的是sigmoid函數,SVM有自己常用的核函數:linear線性核、rbf徑向基、poly多項式比方說,要對一堆香蕉和黃瓜進行分類~~~
首先要明確的是,我們常見的香蕉為黃色,黃瓜為綠色(為什麼不叫綠瓜??)。但是香蕉有綠色的,黃瓜也有黃色的???
好吧。這是我搜的,真的是巨丑!!!
我們採集香蕉和黃瓜的各項特徵信息:氣味,顏色,重量,長度………彙集成特徵點,利用linear線性的分類器進行分類。如下圖:
紅色的是香蕉,綠色的黃瓜,能夠看出來,分類的依據是兩類圖中的兩個點決定的,也就是兩點連線的中垂線!
而且將這條線沿著垂直兩點之間的連線移動,會發現,分類的結果並不會改變。這就是SVM的特點:是依賴於特徵點當中的最特殊的點進行分類的。 這一部分的python實現與邏輯回歸非常相似,源碼與數據集可參考邏輯回歸介紹
2.kernel核函數
- linear
簡單的線性核函數,上文提到的香蕉和黃瓜的分類就是線性核函數的應用
主要應用於線性可分的情況 - rbf 高斯核函數,可以實現高維投射
就好比這樣的分類特徵點,用線性的不管怎麼分,結果都是很不理想的,這時候用rbf從圖中的二維空間投射到三維的。(這裡在投射的時候,經過了一系列的公式上的轉換,不在此贅述)
經過投射之後呢,就變成了下面的這個樣子
- 看上去像是被一個超平面分割了,其實應該把這些點看成一個圓錐的大體樣子,兩類之間的分割變成了一個曲面,這個曲面就是rbf擬合的結果了。
- poly 多項式核函數也是可以實現低維到高維的映射,採用的頻率並不是很高
前一個文章:邏輯回歸 中提到的案例的實現,邏輯回歸的結果是:
用rbf核函數重新擬合之後結果更加的準確,誤差也更加的小了
上圖:
from sklearn.svm import SVCclassifier = SVC(kernel = rbf, random_state = 0)classifier.fit(X_train, y_train)
源碼與數據集的下載請移步:
機器學習(7)-SVM與核函數 - CSDN博客
推薦閱讀:
※PyQt5系列教程(10):老闆,這個打一下
※人人都愛數據科學家!Python數據科學精華實戰課程系列教程連載 ----長期更新中,敬請關注!
※【Python3網路爬蟲開發實戰】7.3-Splash負載均衡配置
※5 種使用 Python 代碼輕鬆實現數據可視化的方法
※怎樣用 Matlab 寫出優雅的代碼?