scikit learn 筆記之支援向量機

2021-10-25 20:27:55 字數 4002 閱讀 5167

支援向量機是一種經典的分類演算法,其原理是找到一條決策邊界使其距離兩個最近的不同類別的點最遠。對於線性可分的資料集,可以使用線性分類器進行分類,對於線性不可分函式,需要將資料集嘗試通過函式變換對映到高維空間,利用核函式替代內積,求解最優α

\alpha

α ,隨後求出權重w

ww和截距b

bb,最終求得決策邊界。

在scikit-learn中svc實現了支援向量機模型,可以用於二分類也可以用於多分類,支援線性和非線性,是比較常用到,對於大資料量的樣本並不實用,並其原型為:

class

sklearn

.svm.svc(

*, c=

1.0, kernel=

'rbf'

, degree=3,

gamma=

'scale'

, coef0=

0.0, shrinking=

true

, probability=

false

, tol=

0.001

, cache_size=

200, class_weight=

none

, verbose=

false

, max_iter=-1

, decision_function_shape=

'ovr'

, break_ties=

false

, random_state=

none

)

引數❐ c:浮點型,容錯值,如果c越大,意味著對分類要求越嚴格。

❐ kernel:預設值為rbf,選擇核函式

❐ degree:乙個整數,當kernel=『rbf』時可以被使用,表示多項式的次數。

❐ gamma:預設為『scale』,核函式係數,當kernel為『poly』、『rbf』、『sigmoid』時。

❐ coef0:浮點型,預設為0.0,核函式的自由項,只有在kernel為『poly』、『sigmoid』時才有意義。

❐ shrinking:布林值,預設為true,如果為true,則使用啟發式收縮,這樣在迭代次數比較大的情況下,可以縮短迭代時間。

❐ probability:布林值,預設為true,如果為true,則啟動概率估計功能,必須在模型訓練之前設定,因為訓練時會使用5折交叉驗證,會延長訓練時長。

❐ tol:浮點數,預設為1e-3,指定迭代的閾值。

❐ cache_size:浮點數,預設為200,單位mb,指定核函式cache大小。

❐ class_weight:字典或者字串 『balanced』,預設為none,指定權重。

❐ verbose:布林值,預設為false,如果為true,啟動verbose輸出,不能在多執行緒環境中執行。

❐ max_iter:整數,預設為-1,指定最大迭代次數。

❐ decision_function_shape:字串,預設』ovr』,指定決策函式的形狀。

❐ break_ties:布林值,預設為false,如果為true,決策準則為』ovr』且類別數量大於2,則決策函式的置信度將被打破。

❐ random_state:乙個幀數或者乙個randomstate例項或者為none,預設為none。

屬性❐ shape_fit_:乙個維度元組,顯示訓練資料的維度。

例項方法

❐ decision_function(x):**樣本的置信分數。

❐ fit(x,y):訓練模型。

❐ get_params([deep]):獲取模型引數資訊。

❐ predict(x):用模型進行**,返回**值。

❐ score(x, y[, sample_weight]):返回模型的**效能得分。

❐ set_params(**params):設定模型引數。

import matplotlib

import matplotlib.pyplot as plt

import warnings

warnings.filterwarnings(

'ignore'

)from sklearn import datasets

from sklearn.svm import svc

import pandas as pd

import numpy as np

讀取資料

data = datasets.load_iris(

).data

target = datasets.load_iris(

).target

# 這裡只取兩個特徵,兩個類別便於畫圖

x = data[:,

(2,3

)]x0 = np.insert(x,

2,values=target,axis=1)

dataset = pd.dataframe(x0,columns=

['x0'

,'x1'

,'y'])

dataset = dataset[dataset[

'y']!=2

]# 訓練**

clf = svc(kernel=

'linear'

,c=float

('inf'

),probability=

true

)clf.fit(dataset[

['x0'

,'x1']]

,dataset[

'y']

)clf_pred = clf.predict(dataset[

['x0'

,'x1']]

)# 輸出引數

x0 = np.linspace(0,

5.5,

200)

w = clf.coef_[0]

b = clf.intercept_[0]

boundry_line =

-b/w[1]

-w[0

]/w[1]

*x0support = clf.support_vectors_

# 邊界

margine =

1/w[1]

margine_high = boundry_line + margine

margine_low = boundry_line - margine

# 畫圖

Scikit Learn學習筆記系列

關於python中的機器學習模組scikit learn模組的學習 使用筆記,我要整理成乙個系列。每一篇學習筆記包括原始碼解析和例項展示。這個既敦促自己不斷的學習下去,也方便日後複習。1 scikit learn學習筆記 開啟旅行 2 scikit learn學習筆記 ordinary least ...

scikit learn文件學習筆記

一 獲取資料,處理資料 coding utf 8 一 載入資料 import numpy as np import urllib url raw data urllib.urlopen url dataset np.loadtxt raw data,delimiter 讀入資料,用逗號分隔 x da...

《scikit learn》隨機森林之回歸

今天我們學習下隨機森林做回歸的用法 話不多說直接上測試 看的更加清晰,總體上和回歸樹是一樣的使用流程 from sklearn.datasets import load boston from sklearn.model selection import cross val score from s...