西瓜書 習題6 2 用線性核 高斯核訓練SVM

2021-08-14 20:57:01 字數 1760 閱讀 1777

import pandas as pd

import numpy as np

dataset = pd.read_csv('/home/parker/watermelondata/watermelon3_0a.csv', delimiter=",")

# print(dataset)

x=dataset.iloc[range(17),[1,2]].values

y=dataset.values[:,3]

print("truev",y)

truev=y

from sklearn import svm

linearkernalmethod=svm.svc(c=10000,kernel='linear')#c=1 defaultly

linearkernalmethod.fit(x,y)

predictv=linearkernalmethod.predict(x)

print("linear",predictv)

confusionmatrix=np.zeros((2,2))

for i in range(len(y)):

if predictv[i]==truev[i]:

if truev[i]==0:confusionmatrix[0,0]+=1

else: confusionmatrix[1,1]+=1

else:

if truev[i]==0:confusionmatrix[0,1]+=1

else:confusionmatrix[1,0]+=1

print("linearconfusionmatrix\n",confusionmatrix)

rbfkernalmethod=svm.svc(c=10000,kernel='rbf')#c=1 defaultly

rbfkernalmethod.fit(x,y)

predictv=rbfkernalmethod.predict(x)

print("rbf",predictv)

confusionmatrix=np.zeros((2,2))

for i in range(len(y)):

if predictv[i]==truev[i]:

if truev[i]==0:confusionmatrix[0,0]+=1

else: confusionmatrix[1,1]+=1

else:

if truev[i]==0:confusionmatrix[0,1]+=1

else:confusionmatrix[1,0]+=1

print("rbfconfusionmatrix\n",confusionmatrix)

這裡的核函式,用了linear和rbf(radial basis function)俗稱線性核和高斯核(徑向基函式)

然後這個c值是用來調軟間隔的,c值越大說明資料本身越重要,軟間隔小,不容許分類差錯。c值無窮大意味著完全不允許軟間隔,就是變成硬間隔的svm。

在這裡,我們發現用線性核函式,無論如何也無法完全劃分資料集,因為資料集本身就不是線性可分的,但是用高斯核函式,當我們把c值逐漸調大的時候,我們發現可以完整地劃分這個資料集,不產生任何差錯。

情況不明時往往使用高斯核函式,對於文字資料等已知線性可分的資料可以用線性核。

實驗結果:c值是10000的時候的結果。

西瓜書習題作答

如出錯誤人,請大佬斧正!表1.1中只包含編號為1和4的兩個樣例,即 編號色澤 根蒂敲聲好瓜1 青綠蜷縮濁響是 4烏黑稍蜷沉悶 否那麼,根據書中介紹的方法,在搜尋過程中刪除與正例不一致的假設 和 或 與反例一致的假設,最後得到以下的假設集合 青綠 蜷縮 濁響 青綠 蜷縮 青綠 濁響 蜷縮 濁響 青綠 ...

西瓜書第1章習題

1.1 試給出相應的版本空間。首先有乙個 假設空間 現實問題中假設空間一般很大。然後有許多策略是可以對假設空間進行搜尋,搜尋過程中刪除與正例不一致的假設 和反例一致的假設。最後選出來的假設的集合,就叫做 版本空間 1.2 若使用最多包含k個合取式的析合正規化來表達表1.1西瓜分類問題的假設空間,估算...

線性回歸詳細推導 基於西瓜書

3.1基本定義 線性模型 linear model 試圖學得乙個通過屬性得線性組合來進行 得函式,即 f x w 1x 1 w 2x 2 dots w dx d b quad 3.1 一般用向量的形式寫成 f x w tx b quad 3.2 其中,w w 1 w 2 dots w d w 和 b...