日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

詳解python 支持向量機(jī)(SVM)算法

瀏覽:23日期:2022-07-10 18:19:31

相比于邏輯回歸,在很多情況下,SVM算法能夠?qū)?shù)據(jù)計(jì)算從而產(chǎn)生更好的精度。而傳統(tǒng)的SVM只能適用于二分類操作,不過卻可以通過核技巧(核函數(shù)),使得SVM可以應(yīng)用于多分類的任務(wù)中。

本篇文章只是介紹SVM的原理以及核技巧究竟是怎么一回事,最后會(huì)介紹sklearn svm各個(gè)參數(shù)作用和一個(gè)demo實(shí)戰(zhàn)的內(nèi)容,盡量通俗易懂。至于公式推導(dǎo)方面,網(wǎng)上關(guān)于這方面的文章太多了,這里就不多進(jìn)行展開了~

1.SVM簡(jiǎn)介

支持向量機(jī),能在N維平面中,找到最明顯得對(duì)數(shù)據(jù)進(jìn)行分類的一個(gè)超平面!看下面這幅圖:

詳解python 支持向量機(jī)(SVM)算法

如上圖中,在二維平面中,有紅和藍(lán)兩類點(diǎn)。要對(duì)這兩類點(diǎn)進(jìn)行分類,可以有很多種分類方法,就如同圖中多條綠線,都可以把數(shù)據(jù)分成兩部分。

但SVM做的,是找到最好的那條線(二維空間),或者說那個(gè)超平面(更高維度的空間),來對(duì)數(shù)據(jù)進(jìn)行分類。這個(gè)最好的標(biāo)準(zhǔn),就是最大間距。

至于要怎么找到這個(gè)最大間距,要找到這個(gè)最大間距,這里大概簡(jiǎn)單說一下,兩個(gè)類別的數(shù)據(jù),到超平面的距離之和,稱之為間隔。而要做的就是找到最大的間隔。

這最終就變成了一個(gè)最大化間隔的優(yōu)化問題。

2.SVM的核技巧

核技巧,主要是為了解決線性SVM無法進(jìn)行多分類以及SVM在某些線性不可分的情況下無法分類的情況。

比如下面這樣的數(shù)據(jù):

詳解python 支持向量機(jī)(SVM)算法

這種時(shí)候就可以使用核函數(shù),將數(shù)據(jù)轉(zhuǎn)換一下,比如這里,我們手動(dòng)定義了一個(gè)新的點(diǎn),然后對(duì)所有的數(shù)據(jù),計(jì)算和這個(gè)新的點(diǎn)的歐式距離,這樣我們就得到一個(gè)新的數(shù)據(jù)。而其中,離這個(gè)新點(diǎn)距離近的數(shù)據(jù),就被歸為一類,否則就是另一類。這就是核函數(shù)。

詳解python 支持向量機(jī)(SVM)算法

這是最粗淺,也是比較直觀的介紹了。通過上面的介紹,是不是和Sigmoid有點(diǎn)像呢?都是通過將數(shù)據(jù)用一個(gè)函數(shù)進(jìn)行轉(zhuǎn)換,最終得到結(jié)果,其實(shí)啊,Sigmoid就是一鐘核函數(shù)來著,而上面說的那種方式,是高斯核函數(shù)。

這里補(bǔ)充幾點(diǎn):

1.上面的圖中只有一個(gè)點(diǎn),實(shí)際可以有無限多個(gè)點(diǎn),這就是為什么說SVM可以將數(shù)據(jù)映射到多維空間中。計(jì)算一個(gè)點(diǎn)的距離就是1維,2個(gè)點(diǎn)就是二維,3個(gè)點(diǎn)就是三維等等。。。 2.上面例子中的紅點(diǎn)是直接手動(dòng)指定,實(shí)際情況中可沒辦法這樣,通常是用隨機(jī)產(chǎn)生,再慢慢試出最好的點(diǎn)。 3.上面舉例這種情況屬于高斯核函數(shù),而實(shí)際常見的核函數(shù)還有多項(xiàng)式核函數(shù),Sigmoid核函數(shù)等等。

OK,以上就是關(guān)于核技巧(核函數(shù))的初步介紹,更高級(jí)的這里也不展開了,網(wǎng)上的教程已經(jīng)非常多了。

接下來我們繼續(xù)介紹sklearn中SVM的應(yīng)用方面內(nèi)容。

3.sklearn中SVM的參數(shù)

def SVC(C=1.0, kernel=’rbf’, degree=3, gamma=’auto_deprecated’, coef0=0.0, shrinking=True, probability=False, tol=1e-3, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape=’ovr’, random_state=None) - C:類似于Logistic regression中的正則化系數(shù),必須為正的浮點(diǎn)數(shù),默認(rèn)為 1.0,這個(gè)值越小,說明正則化效果越強(qiáng)。換句話說,這個(gè)值越小,越訓(xùn)練的模型更泛化,但也更容易欠擬合。- kernel:核函數(shù)選擇,比較復(fù)雜,稍后介紹- degree:多項(xiàng)式階數(shù),僅在核函數(shù)選擇多項(xiàng)式(即“poly”)的時(shí)候才生效,int類型,默認(rèn)為3。- gamma:核函數(shù)系數(shù),僅在核函數(shù)為高斯核,多項(xiàng)式核,Sigmoid核(即“rbf“,“poly“ ,“sigmoid“)時(shí)生效。float類型,默認(rèn)為“auto”(即值為 1 / n_features)。- coef0:核函數(shù)的獨(dú)立項(xiàng),僅在核函數(shù)為多項(xiàng)式核核Sigmoid核(即“poly“ ,“sigmoid“)時(shí)生效。float類型,默認(rèn)為0.0。獨(dú)立項(xiàng)就是常數(shù)項(xiàng)。- shrinking:不斷縮小的啟發(fā)式方法可以加快優(yōu)化速度。 就像在FAQ中說的那樣,它們有時(shí)會(huì)有所幫助,有時(shí)卻沒有幫助。 我認(rèn)為這是運(yùn)行時(shí)問題,而不是收斂問題。- probability:是否使用概率評(píng)估,布爾類型,默認(rèn)為False。開啟的話會(huì)評(píng)估數(shù)據(jù)到每個(gè)分類的概率,不過這個(gè)會(huì)使用到較多的計(jì)算資源,慎用?。? tol:停止迭代求解的閾值,單精度類型,默認(rèn)為1e-3。邏輯回歸也有這樣的一個(gè)參數(shù),功能都是一樣的。- cache_size:指定使用多少內(nèi)存來運(yùn)行,浮點(diǎn)型,默認(rèn)200,單位是MB。- class_weight:分類權(quán)重,也是和邏輯回歸的一樣,我直接就搬當(dāng)時(shí)的內(nèi)容了:分類權(quán)重,可以是一個(gè)dict(字典類型),也可以是一個(gè)字符串'balanced'字符串。默認(rèn)是None,也就是不做任何處理,而'balanced'則會(huì)去自動(dòng)計(jì)算權(quán)重,分類越多的類,權(quán)重越低,反之權(quán)重越高。也可以自己輸出一個(gè)字典,比如一個(gè) 0/1 的二元分類,可以傳入{0:0.1,1:0.9},這樣 0 這個(gè)分類的權(quán)重是0.1,1這個(gè)分類的權(quán)重是0.9。這樣的目的是因?yàn)橛行┓诸悊栴},樣本極端不平衡,比如網(wǎng)絡(luò)攻擊,大部分正常流量,小部分攻擊流量,但攻擊流量非常重要,需要有效識(shí)別,這時(shí)候就可以設(shè)置權(quán)重這個(gè)參數(shù)。- verbose:輸出詳細(xì)過程,int類型,默認(rèn)為0(不輸出)。當(dāng)大于等于1時(shí),輸出訓(xùn)練的詳細(xì)過程。僅當(dāng)'solvers'參數(shù)設(shè)置為'liblinear'和'lbfgs'時(shí)有效。- max_iter:最大迭代次數(shù),int類型,默認(rèn)-1(即無限制)。注意前面也有一個(gè)tol迭代限制,但這個(gè)max_iter的優(yōu)先級(jí)是比它高的,也就如果限制了這個(gè)參數(shù),那是不會(huì)去管tol這個(gè)參數(shù)的。- decision_function_shape:多分類的方案選擇,有“ovo”,“ovr”兩種方案,也可以選則“None”,默認(rèn)是“ovr”,詳細(xì)區(qū)別見下面。- random_state:隨時(shí)數(shù)種子。

sklearn-SVM參數(shù),kernel特征選擇

kernel:核函數(shù)選擇,字符串類型,可選的有“l(fā)inear”,“poly”,“rbf”,“sigmoid”,“precomputed”以及自定義的核函數(shù),默認(rèn)選擇是“rbf”。各個(gè)核函數(shù)介紹如下:

“l(fā)inear”:線性核函數(shù),最基礎(chǔ)的核函數(shù),計(jì)算速度較快,但無法將數(shù)據(jù)從低維度演化到高維度 “poly”:多項(xiàng)式核函數(shù),依靠提升維度使得原本線性不可分的數(shù)據(jù)變得線性可分 “rbf”:高斯核函數(shù),這個(gè)可以映射到無限維度,缺點(diǎn)是計(jì)算量比較大 “sigmoid”:Sigmoid核函數(shù),對(duì),就是邏輯回歸里面的那個(gè)Sigmoid函數(shù),使用Sigmoid的話,其實(shí)就類似使用一個(gè)一層的神經(jīng)網(wǎng)絡(luò) “precomputed”:提供已經(jīng)計(jì)算好的核函數(shù)矩陣,sklearn不會(huì)再去計(jì)算,這個(gè)應(yīng)該不常用 “自定義核函數(shù)”:sklearn會(huì)使用提供的核函數(shù)來進(jìn)行計(jì)算

說這么多,那么給個(gè)不大嚴(yán)謹(jǐn)?shù)耐扑]吧樣本多,特征多,二分類,選擇線性核函數(shù)樣本多,特征多,多分類,多項(xiàng)式核函數(shù)樣本不多,特征多,二分類/多分類,高斯核函數(shù)樣本不多,特征不多,二分類/多分類,高斯核函數(shù)

當(dāng)然,正常情況下,一般都是用交叉驗(yàn)證來選擇特征,上面所說只是一個(gè)較為粗淺的推薦。

sklearn-SVM參數(shù),多分類方案

其實(shí)這個(gè)在邏輯回歸里面已經(jīng)有說過了,這里還是多說一下。

原始的SVM是基于二分類的,但有些需求肯定是需要多分類。那么有沒有辦法讓SVM實(shí)現(xiàn)多分類呢?那肯定是有的,還不止一種。

實(shí)際上二元分類問題很容易推廣到多元邏輯回歸。比如總是認(rèn)為某種類型為正值,其余為0值。

舉個(gè)例子,要分類為A,B,C三類,那么就可以把A當(dāng)作正向數(shù)據(jù),B和C當(dāng)作負(fù)向數(shù)據(jù)來處理,這樣就可以用二分類的方法解決多分類的問題,這種方法就是最常用的one-vs-rest,簡(jiǎn)稱OvR。而且這種方法也可以方便得推廣到其他二分類模型中(當(dāng)然其他算法可能有更好的多分類辦法)。

另一種多分類的方案是Many-vs-Many(MvM),它會(huì)選擇一部分類別的樣本和另一部分類別的樣本來做二分類。

聽起來很不可思議,但其實(shí)確實(shí)是能辦到的。比如數(shù)據(jù)有A,B,C三個(gè)分類。

我們將A,B作為正向數(shù)據(jù),C作為負(fù)向數(shù)據(jù),訓(xùn)練出一個(gè)分模型。再將A,C作為正向數(shù)據(jù),B作為負(fù)向數(shù)據(jù),訓(xùn)練出一個(gè)分類模型。最后B,C作為正向數(shù)據(jù),C作為負(fù)向數(shù)據(jù),訓(xùn)練出一個(gè)模型。

通過這三個(gè)模型就能實(shí)現(xiàn)多分類,當(dāng)然這里只是舉個(gè)例子,實(shí)際使用中有其他更好的MVM方法。限于篇幅這里不展開了。

MVM中最常用的是One-Vs-One(OvO)。OvO是MvM的特例。即每次選擇兩類樣本來做二元邏輯回歸。

對(duì)比下兩種多分類方法,通常情況下,Ovr比較簡(jiǎn)單,速度也比較快,但模型精度上沒MvM那么高。MvM則正好相反,精度高,但速度上比不過Ovr。

4.sklearn SVM實(shí)戰(zhàn)

我們還是使用鳶尾花數(shù)據(jù)集,不過這次只使用其中的兩種花來進(jìn)行分類。首先準(zhǔn)備數(shù)據(jù):

import matplotlib.pyplot as pltimport numpy as npfrom sklearn import svm,datasetsimport pandas as pdtem_X = iris.data[:, :2]tem_Y = iris.targetnew_data = pd.DataFrame(np.column_stack([tem_X,tem_Y]))#過濾掉其中一種類型的花new_data = new_data[new_data[2] != 1.0]#生成X和YX = new_data[[0,1]].valuesY = new_data[[2]].values

然后用數(shù)據(jù)訓(xùn)練,并生成最終圖形

# 擬合一個(gè)SVM模型clf = svm.SVC(kernel=’linear’)clf.fit(X, Y)# 獲取分割超平面w = clf.coef_[0]# 斜率a = -w[0] / w[1]# 從-5到5,順序間隔采樣50個(gè)樣本,默認(rèn)是num=50# xx = np.linspace(-5, 5) # , num=50)xx = np.linspace(-2, 10) # , num=50)# 二維的直線方程yy = a * xx - (clf.intercept_[0]) / w[1]print('yy=', yy)# plot the parallels to the separating hyperplane that pass through the support vectors# 通過支持向量繪制分割超平面print('support_vectors_=', clf.support_vectors_)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])# plot the line, the points, and the nearest vectors to the planeplt.plot(xx, yy, ’k-’)plt.plot(xx, yy_down, ’k--’)plt.plot(xx, yy_up, ’k--’)plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=80, facecolors=’none’)plt.scatter(X[:, 0].flat, X[:, 1].flat, c=’#86c6ec’, cmap=plt.cm.Paired)# import operator# from functools import reduce# plt.scatter(X[:, 0].flat, X[:, 1].flat, c=reduce(operator.add, Y), cmap=plt.cm.Paired)plt.axis(’tight’)plt.show()

最終的SVM的分類結(jié)果如下:

詳解python 支持向量機(jī)(SVM)算法

以上就是詳解python 支持向量機(jī)(SVM)算法的詳細(xì)內(nèi)容,更多關(guān)于python SVM算法的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲91网站| 日精品一区二区三区| 国产精品第一| 国产精品自在| 久久久免费人体| 日韩欧美在线中字| 久久裸体视频| 久久午夜精品| 国产精品一区亚洲| 中文在线资源| 亚洲免费一区二区| 三级在线观看一区二区| 日韩中文av| 你懂的亚洲视频| 亚洲黄色中文字幕| 91久久在线| 国产精品一区二区三区美女| 在线天堂资源www在线污| 午夜精品婷婷| 日韩精品高清不卡| 成人精品高清在线视频| 婷婷亚洲五月色综合| 日韩中文字幕一区二区高清99| 国产精品22p| 欧美成人高清| 久久国产欧美日韩精品| 精品久久久网| 国产精品婷婷| 乱一区二区av| 亚洲专区在线| 岛国精品一区| 亚洲18在线| 欧美freesex黑人又粗又大| 亚洲综合另类| 四虎成人av| 亚洲1区在线观看| 日韩激情一区| 日韩国产在线一| 日韩精品水蜜桃| 国产一卡不卡| 亚洲性视频h| 美女国产一区二区三区| 国产精品97| 老鸭窝一区二区久久精品| 黄色亚洲大片免费在线观看| 免费在线观看一区| 蜜臀精品久久久久久蜜臀 | 国产免费av一区二区三区| 日韩欧美精品| 欧美一区二区三区久久精品| 红桃视频亚洲| yellow在线观看网址| 日韩精品一区二区三区中文在线| 国产精品蜜芽在线观看| 啪啪亚洲精品| 男人操女人的视频在线观看欧美| 亚洲深夜视频| 久久爱www.| 亚洲+小说+欧美+激情+另类| 欧美在线网站| 亚洲精品一区三区三区在线观看| 国产精品一区二区免费福利视频| 久久亚洲二区| 在线精品视频在线观看高清| 韩国一区二区三区视频| 日本aⅴ亚洲精品中文乱码| 黑丝美女一区二区| 亚洲综合在线电影| 麻豆成人在线观看| 国产精品一区免费在线| 亚洲1区在线观看| 丝袜美腿亚洲一区二区图片| 欧美日韩国产传媒| 久久精品国内一区二区三区水蜜桃| 国产精品综合色区在线观看| 日韩在线一区二区| 久久亚洲影院| 亚洲在线免费| 性一交一乱一区二区洋洋av| 亚洲高清影视| 国精品一区二区| 香蕉视频亚洲一级| 久久人人97超碰国产公开结果| 国产成人精品一区二区三区在线| 免费一级欧美在线观看视频| 久久伊人国产| 国产盗摄——sm在线视频| 精品成av人一区二区三区 | 国产剧情在线观看一区| 日韩一区二区三区精品| 婷婷综合电影| 青草av.久久免费一区| 日本午夜精品一区二区三区电影 | 国产精品入口久久| 国产精品扒开腿做爽爽爽软件| 久久成人高清| 91亚洲国产高清| 久久精品1区| 欧美综合另类| 亚洲深夜福利| 亚洲精品乱码久久久久久蜜桃麻豆| 最新国产精品| 日本aⅴ免费视频一区二区三区| 欧美日韩视频免费看| 国产免费久久| 91欧美日韩| 秋霞国产精品| 免费欧美日韩| 国产精品夜夜夜| 动漫av一区| 激情欧美国产欧美| 中文字幕av一区二区三区四区| 午夜久久av| 精品久久在线| 美女久久久久| 亚州av一区| 精品一区二区三区视频在线播放| 97精品一区二区| 国产亚洲午夜| 国产女人18毛片水真多18精品| 成人国产精品| 欧美日韩高清| 91亚洲精品在看在线观看高清| 美女久久久精品| 久久免费国产| 亚洲乱码视频| 久久精品免视看国产成人| 久久国产亚洲精品| 中文字幕日韩亚洲| 成人在线视频免费| 亚洲专区一区| 精品国产黄a∨片高清在线| 亚洲成人一区| 欧美精品国产白浆久久久久| 成人日韩在线| 亚洲精品美女91| 久久久久观看| 欧美在线亚洲| 麻豆中文一区二区| 久久国产精品99国产| 国产精久久一区二区| 美女毛片一区二区三区四区| 国产情侣久久| 欧美/亚洲一区| 国产精品sm| 久久xxxx| 婷婷综合六月| 91欧美日韩在线| 亚洲午夜av| 久久不卡日韩美女| 午夜在线一区| 国产一区二区三区四区| 视频在线在亚洲| 波多野结衣久久精品| 日韩亚洲精品在线观看| 亚洲高清av| 国产成人精品免费视| 日本a级不卡| 红桃视频国产一区| 给我免费播放日韩视频| 日韩一区二区三区精品| 激情综合亚洲| 91欧美在线| 国产精品白浆| 一区二区三区四区日韩| 亚洲va中文在线播放免费| 色婷婷成人网| 欧美日韩国产传媒| 在线看片福利| 久久精品一本| 欧美日韩亚洲一区| 日韩在线一区二区| 在线国产一区| 日韩精品看片| a天堂资源在线| 美腿丝袜亚洲三区| 国产精品最新| 欧美日韩亚洲三区| 伊人www22综合色| 亚洲一区二区三区四区五区午夜 | 日韩精品视频中文字幕| 日韩一级不卡| 99视频精品全国免费| 正在播放日韩精品| 国产成人在线中文字幕| 国产精品综合色区在线观看| 天堂av一区| 亚洲人成高清| 另类激情亚洲| 国产精品女主播一区二区三区| 日韩和的一区二在线| 国产suv精品一区二区四区视频| 国产免费播放一区二区| 亚洲精品高潮| 亚洲人妖在线| 亚洲精品影视| 亚洲3区在线| 日韩精彩视频在线观看| 丝瓜av网站精品一区二区| 国产精品视区|