支持向量機(jī)(SVM) 淺析

SVM介紹

SVM支持向量機(jī)(英文全稱:support vector machine)是一個(gè)分類算法枪狂,通過找到一個(gè)分類平面危喉, 將數(shù)據(jù)分隔在平面兩側(cè)從而達(dá)到分類的目的州疾。
SVM算法是有監(jiān)督的數(shù)據(jù)挖掘算法辜限,是一種二分類算法(經(jīng)過改造后也可以用于多分類,但比較復(fù)雜), 在非線性分類方面有明顯優(yōu)勢(shì)严蓖;通常SVM用于二元分類問題薄嫡,對(duì)于多元分類通常將其分解為多個(gè)二元分類問題,再進(jìn)行分類

SVM應(yīng)用場(chǎng)景

SVM(支持向量機(jī))主要用于分類問題颗胡,主要的應(yīng)用場(chǎng)景有字符識(shí)別毫深、面部識(shí)別、行人檢測(cè)毒姨、文本分類等領(lǐng)域哑蔫,在機(jī)器學(xué)習(xí)領(lǐng)域,支持向量機(jī)SVM(Support Vector Machine)是一個(gè)有監(jiān)督的學(xué)習(xí)模型弧呐,通常用來進(jìn)行模式識(shí)別鸳址、分類(異常值檢測(cè))以及回歸分析。

SVM算法思想:

它分類的基本思想是利用最大間隔進(jìn)行分類泉懦,處理非線性問題是通過核函數(shù)將特征向量映射到高維空間稿黍,從而變成線性可分的,但是運(yùn)算卻是在低維空間運(yùn)行的崩哩⊙睬颍考慮到數(shù)據(jù)中可能存在噪音,還引入了松弛變量酣栈。
一個(gè)普通的SVM就是一條直線罷了,用來完美劃分linearly separable的兩類矿筝。但這又不是一條普通的直線,這是無數(shù)條可以分類的直線當(dāng)中最完美的窖维,因?yàn)樗『迷趦蓚€(gè)類的中間榆综,距離兩個(gè)類的點(diǎn)都一樣遠(yuǎn)。而所 謂的Support vector就是這些離分界線最近的『點(diǎn)』鼻疮。如果去掉這些點(diǎn)琳轿,直線多半是要改變位置的
如下圖所示判沟, 直線表示的是訓(xùn)練出的一個(gè)分類平面, 將數(shù)據(jù)有效的分隔開崭篡。

說個(gè)直觀的解釋挪哄,比如現(xiàn)在有蘋果和香蕉散亂地放在桌子上琉闪,如何一刀砍下,刀的一側(cè)只有蘋果塘偎,另一邊只有香蕉呢拿霉?(二分類的思想)
這時(shí)候小明放學(xué)回來了,小明想吃蘋果不想吃香蕉涵防,于是乎小明猛拍桌子,蘋果和香蕉彈向空中壮池,彈在空中的某個(gè)時(shí)刻杀怠,蘋果在一個(gè)區(qū)域、梨在另一個(gè)區(qū)域赔退,這時(shí)候小明在它們之間迅速劃了一刀证舟,任務(wù)完成窗骑!蘋果和香蕉就分開了



大概就是這個(gè)流程,數(shù)學(xué)原理有點(diǎn)復(fù)雜(至今不太懂)抵知,只是概略地講一下软族,聽說SVM的原理寫細(xì)了可以寫本書(有出版的書)

SVM模型訓(xùn)練

模型訓(xùn)練成功后,根據(jù)support vector(一組向量)對(duì)后續(xù)向量進(jìn)行分類互订;
輸入輸出:模型輸入的是一堆向量(一般是-1~1之間的浮點(diǎn)數(shù)),以及這些向量所屬的分類label(一般用-1仰禽,1表示)氮墨;模型訓(xùn)練是要調(diào)整的內(nèi)容:核函數(shù)吐葵、核函數(shù)的參數(shù)、松弛變量等猛铅,取決于算法實(shí)現(xiàn)的情況

使用sklearn 實(shí)現(xiàn)支持向量機(jī)(SVM)

(1)簡單的預(yù)測(cè)
測(cè)試數(shù)據(jù)我們給出三個(gè)點(diǎn):(2,0)(1,1)(2,3),前兩個(gè)點(diǎn)我們分為一類凤藏,第三個(gè)點(diǎn)事另一類可以記為(0,0,1)±醪耍看代碼

#coding:utf8
#導(dǎo)入svm的庫
from sklearn import svm
x = [[2, 0], [1, 1], [2, 3]]
y = [0, 0, 1]  #對(duì)應(yīng)x的分類標(biāo)記
clf = svm.SVC(kernel= 'linear') #線性核函數(shù)
clf.fit(x, y)

print (clf)
print (clf.support_vectors_ ) #支持向量
print (clf.support_ ) #支持向量是哪幾個(gè)(下標(biāo))
print (clf.n_support_)    #每一類中有幾個(gè)支持向量
'''
print (clf.predict([0, 1]))   #測(cè)試數(shù)據(jù)
ValueError: Expected 2D array, got 1D array instead:
array=[0. 1.].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
'''
print (clf.predict([[0, 1]]))   #測(cè)試數(shù)據(jù)

print("########################################\n")

輸出結(jié)果

結(jié)果輸出:
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape='ovr', degree=3, gamma='auto', kernel='linear',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False)
[[1. 1.]
 [2. 3.]]
[1 2]
[1 1]
[0]

(2)復(fù)雜一些的預(yù)測(cè)
下面我們做一個(gè)復(fù)雜點(diǎn)的例子蹄梢,我們來隨機(jī)生成兩類點(diǎn),進(jìn)行SVM的建模然后我們?cè)诋嫴贾挟嫵鲞@個(gè)模型圖而咆。
訓(xùn)練集:隨機(jī)生成正太分布的點(diǎn)幕袱,20個(gè)小于0的 20個(gè)大于0的數(shù)。
代碼如下:

import numpy as np
import pylab as pl

#生成隨機(jī)點(diǎn)數(shù)據(jù)集
np.random.seed(0) #固定隨機(jī)值
x = np.r_[np.random.randn(20, 2) - [2, 2], np.random.randn(20, 2) + [2, 2]]
y = [0] *20 +[1] * 20

print(x)
print(y)

clf2 = svm.SVC(kernel='linear')
clf2.fit(x, y)
print(clf2.support_)
至此為止涯捻,模型已經(jīng)建完,開始繪圖

#畫出散點(diǎn)圖
#畫出支持向量的點(diǎn)汰瘫,參數(shù):x,y趴乡,大小
pl.scatter(clf2.support_vectors_[:,0],clf2.support_vectors_[:,1],s=80)
#畫出全部的點(diǎn)蝗拿,參數(shù):x,y哀托,顏色,colormap胖齐,形狀
pl.scatter(x[:,0],x[:,1],c=y,cmap=pl.cm.Paired,marker='o')
pl.axis('tight')
#pl.savefig("dd") 保存繪圖
pl.show()
結(jié)果輸出
[[-0.23594765 -1.59984279]
 [-1.02126202  0.2408932 ]
 [-0.13244201 -2.97727788]
 [-1.04991158 -2.15135721]
 [-2.10321885 -1.5894015 ]
 [-1.85595643 -0.54572649]
 [-1.23896227 -1.87832498]
 [-1.55613677 -1.66632567]
 [-0.50592093 -2.20515826]
 [-1.6869323  -2.85409574]
 [-4.55298982 -1.3463814 ]
 [-1.1355638  -2.74216502]
 [ 0.26975462 -3.45436567]
 [-1.95424148 -2.18718385]
 [-0.46722079 -0.53064123]
 [-1.84505257 -1.62183748]
 [-2.88778575 -3.98079647]
 [-2.34791215 -1.84365103]
 [-0.76970932 -0.79762015]
 [-2.38732682 -2.30230275]
 [ 0.95144703  0.57998206]
 [ 0.29372981  3.9507754 ]
 [ 1.49034782  1.5619257 ]
 [ 0.74720464  2.77749036]
 [ 0.38610215  1.78725972]
 [ 1.10453344  2.3869025 ]
 [ 1.48919486  0.81936782]
 [ 1.97181777  2.42833187]
 [ 2.06651722  2.3024719 ]
 [ 1.36567791  1.63725883]
 [ 1.32753955  1.64044684]
 [ 1.18685372  0.2737174 ]
 [ 2.17742614  1.59821906]
 [ 0.36980165  2.46278226]
 [ 1.09270164  2.0519454 ]
 [ 2.72909056  2.12898291]
 [ 3.13940068  0.76517418]
 [ 2.40234164  1.31518991]
 [ 1.12920285  1.42115034]
 [ 1.68844747  2.05616534]]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[ 1 14 20]

暫時(shí)先說到這里呀伙,如有理解的不正確的地方添坊,歡迎批評(píng)指正
end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雨女,隨后出現(xiàn)的幾起案子阳准,更是在濱河造成了極大的恐慌,老刑警劉巖溺职,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件位喂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡七冲,警方通過查閱死者的電腦和手機(jī)规婆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蝉稳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掘鄙,“玉大人,你說我怎么就攤上這事收津∽腔铮” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵吻贿,是天一觀的道長哑子。 經(jīng)常有香客問我,道長卧蜓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任宠叼,我火速辦了婚禮其爵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘摩渺。我一直安慰自己,他們只是感情好横侦,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布绰姻。 她就那樣靜靜地躺著舰罚,像睡著了一般帜矾。 火紅的嫁衣襯著肌膚如雪屑柔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天掸宛,我揣著相機(jī)與錄音招拙,去河邊找鬼。 笑死劈愚,一個(gè)胖子當(dāng)著我的面吹牛闻妓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播由缆,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼均唉,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了舔箭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤箫章,失蹤者是張志新(化名)和其女友劉穎镜会,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戳表,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匾旭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了野瘦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片飒泻。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖泞遗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情汹买,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布晦毙,位于F島的核電站耙蔑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏须揣。R本人自食惡果不足惜钱豁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望牲尺。 院中可真熱鬧,春花似錦凛澎、人聲如沸估蹄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至冷尉,卻和暖如春系枪,著一層夾襖步出監(jiān)牢的瞬間雀哨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工膊夹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捌浩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓进统,卻偏偏與公主長得像浪听,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子迹栓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容