SVM——分類與回歸實(shí)例

在線課堂——支持向量機(jī)實(shí)例學(xué)習(xí)筆記犯助。

支持向量機(jī)簡(jiǎn)介

支持向量機(jī)是一種監(jiān)督學(xué)習(xí)數(shù)學(xué)模型,由n個(gè)變量組成的數(shù)據(jù)項(xiàng)都可以抽象成n維空間內(nèi)的一個(gè)點(diǎn),點(diǎn)的各個(gè)維度坐標(biāo)值即為各個(gè)變量赎离。如果一堆數(shù)據(jù)項(xiàng)可以分為m個(gè)類,那么可以構(gòu)建m-1個(gè)n維超平面將不同種類的數(shù)據(jù)項(xiàng)的點(diǎn)盡量分隔開(kāi)端辱,則這些超平面為支持向量面梁剔,這個(gè)分類數(shù)學(xué)模型為支持向量機(jī)分類模型。

Classification分析——鳶尾花數(shù)據(jù)集

Scikit-Learn自帶鳶尾花數(shù)據(jù)集舞蔽,可使用datasets.load_iris()載入荣病。

  • data——每行是某個(gè)鳶尾花的花萼長(zhǎng)度、花萼寬度渗柿、花瓣長(zhǎng)度个盆、花瓣寬度。
  • target——第n個(gè)數(shù)據(jù)分別表示data段第n行數(shù)據(jù)所對(duì)應(yīng)的鳶尾花類別編號(hào)(共3類)朵栖。

首先颊亮,使用交叉驗(yàn)證法進(jìn)行分析。由于交叉驗(yàn)證法每次選取的測(cè)試集是隨機(jī)的陨溅,因此每次運(yùn)算結(jié)果未必相同终惑。下面為鳶尾花數(shù)據(jù)集的SVM聚類訓(xùn)練的源碼,并用交叉驗(yàn)證法進(jìn)行分析门扇。

from sklearn import datasets
from sklearn.cross_validation import train_test_split
from sklearn.svm import SVC
from numpy import *

# download the dataset
iris_dataset = datasets.load_iris()
iris_data = iris_dataset.data           
iris_target = iris_dataset.target

# split data and target into training set and testing set
# 80% training, 20% testing
x_train, x_test, y_train, y_test = train_test_split(iris_data, iris_target, test_size = 0.2)
# construct SVC by using rbf as kernel function
SVC_0 = SVC(kernel = 'rbf')
SVC_0.fit(x_train, y_train)

predict = SVC_0.predict(x_test)
right = sum(predict == y_test)
# accuracy rate
print("%f%%" % (right * 100.0 / predict.shape[0]))

以下源碼是使用留一驗(yàn)證法(Leave-One-Out雹有,LOO)對(duì)鳶尾花數(shù)據(jù)集進(jìn)行分析偿渡。

from sklearn import datasets
from sklearn.cross_validation import train_test_split
from sklearn.svm import SVC
from numpy import *

def data_svc_test(data, target, index):
    x_train = vstack((data[0: index], data[index + 1: -1]))
    x_test = data[index]
    y_train = hstack((target[0: index], target[index + 1: -1]))
    y_test = target[index]
    SVC_0 = SVC(kernel = 'rbf')
    SVC_0.fit(x_train, y_train)
    predict = SVC_0.predict(x_test)
    return predict == y_test
    
# download the dataset
iris_dataset = datasets.load_iris()
iris_data = iris_dataset.data           
iris_target = iris_dataset.target
length = iris_target.shape[0]
right = 0
for i in range(0, length):
    right += data_svc_test(iris_data, iris_target, i)

# accuracy rate
print("%f%%" % (right * 100.0 / length))

Regression分析——波士頓房?jī)r(jià)數(shù)據(jù)集

Scikit-learn自帶波士頓房?jī)r(jià)集,該數(shù)據(jù)集來(lái)源于1978年美國(guó)某經(jīng)濟(jì)學(xué)雜志上件舵,可由datasets.load_boston()載入卸察。該數(shù)據(jù)集包含若干波士頓房屋的價(jià)格及其各項(xiàng)數(shù)據(jù),每個(gè)數(shù)據(jù)項(xiàng)包含14個(gè)數(shù)據(jù)铅祸,分別是房屋均價(jià)及周邊犯罪率坑质、是否在河邊等相關(guān)信息,其中最后一個(gè)數(shù)據(jù)是房屋均價(jià)临梗。
這里涉及到了一個(gè)數(shù)據(jù)預(yù)處理的步驟——為了便于后續(xù)訓(xùn)練涡扼,需要對(duì)讀取到的數(shù)據(jù)進(jìn)行處理。因?yàn)橛绊懛績(jī)r(jià)的數(shù)據(jù)的范圍都不一致盟庞,這些數(shù)據(jù)都不在一個(gè)數(shù)量級(jí)上吃沪,如果直接使用未經(jīng)預(yù)處理的數(shù)據(jù)進(jìn)行訓(xùn)練,很容易導(dǎo)致數(shù)值大的數(shù)據(jù)對(duì)結(jié)果影響極大什猖,從而不能平衡的體現(xiàn)出各個(gè)數(shù)據(jù)的重要性票彪。因此需要通過(guò)數(shù)學(xué)方法,依據(jù)方差不狮、平均值等因素降铸,把各類數(shù)據(jù)放縮到一個(gè)相同的范圍內(nèi),使其影響力所占權(quán)重相近摇零。

from sklearn import datasets
from sklearn.cross_validation import train_test_split
from sklearn.svm import SVR
# preprocessing function
from sklearn.preprocessing import StandardScaler
from numpy import *

house_dataset = datasets.load_boston()
house_data = house_dataset.data
house_price = house_dataset.target
x_train, x_test, y_train, y_test = train_test_split(house_data, house_price, test_size = 0.2)
# f(x) = (x - means) / standard deviation
scaler = StandardScaler()
scaler.fit(x_train)
# standardization
x_train = scaler.transform(x_train)
x_test = scaler.transform(x_test)

# construct SVR model
svr = SVR(kernel = 'rbf')
svr.fit(x_train, y_train)
y_predict = svr.predict(x_test)
result = hstack((y_test.reshape(-1, 1), y_predict.reshape(-1, 1)))
print(result)

最后預(yù)測(cè)結(jié)果呈2列顯示推掸,第1列為實(shí)際房?jī)r(jià),第2列為預(yù)測(cè)房?jī)r(jià)驻仅,此處略谅畅。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市噪服,隨后出現(xiàn)的幾起案子毡泻,更是在濱河造成了極大的恐慌,老刑警劉巖粘优,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仇味,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡敬飒,警方通過(guò)查閱死者的電腦和手機(jī)邪铲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門芬位,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)无拗,“玉大人,你說(shuō)我怎么就攤上這事昧碉∮⑷荆” “怎么了揽惹?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)四康。 經(jīng)常有香客問(wèn)我搪搏,道長(zhǎng),這世上最難降的妖魔是什么闪金? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任疯溺,我火速辦了婚禮,結(jié)果婚禮上哎垦,老公的妹妹穿的比我還像新娘囱嫩。我一直安慰自己,他們只是感情好漏设,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布墨闲。 她就那樣靜靜地躺著,像睡著了一般郑口。 火紅的嫁衣襯著肌膚如雪鸳碧。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天犬性,我揣著相機(jī)與錄音瞻离,去河邊找鬼。 笑死仔夺,一個(gè)胖子當(dāng)著我的面吹牛琐脏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缸兔,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼日裙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了惰蜜?” 一聲冷哼從身側(cè)響起昂拂,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抛猖,沒(méi)想到半個(gè)月后格侯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡财著,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年联四,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撑教。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡朝墩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伟姐,到底是詐尸還是另有隱情收苏,我是刑警寧澤亿卤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站鹿霸,受9級(jí)特大地震影響排吴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜懦鼠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一钻哩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肛冶,春花似錦憋槐、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至扣泊,卻和暖如春近范,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背延蟹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工评矩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人阱飘。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓斥杜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親沥匈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蔗喂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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