支援向量機 線性分類SVM

2021-08-17 19:56:55 字數 3016 閱讀 3318

模型原型

sklearn.svm.linearsvc(penalty=』l2』,loss=』squared_hinge』,dual=true,tol=0.0001,c=1.0,multi_class=』ovr』, fit_intercept=true,intercept_scaling=1,class_weight=none,verbose=0,random_state=none,max_iter=1000)

引數

dual:

tolc:罰項引數

multi_class:指定多類分類問題的策略

fit_intercept:是否計算截距(常數項)

intercept_scaling:乙個人工特徵,該特徵對所有例項都是常數值(人工特徵也參與了罰項的計算)

class_weight

verbose:表示是否開啟verbose輸出

random_state

max_iter

屬性

方法

import matplotlib.pyplot as plt

import numpy as np

from sklearn import datasets,linear_model,cross_validation,svm

載入資料

def

load_data_classfication

(): iris=datasets.load_iris()

x_train=iris.data

y_train=iris.target

return cross_validation.train_test_split(x_train,y_train,test_size=0.25,random_state=0,stratify=y_train)

使用linearsvc類

def

test_linearsvc

(*data):

x_train,x_test,y_train,y_test=data

cls=svm.linearsvc()

cls.fit(x_train,y_train)

print('coefficients:%s,intercept %s'%(cls.coef_,cls.intercept_))

print('score:%.2f'%cls.score(x_test,y_test))

x_train,x_test,y_train,y_test=load_data_classfication()

test_linearsvc(x_train,x_test,y_train,y_test)

損失函式的影響

def

test_linearsvc_loss

(*data):

x_train,x_test,y_train,y_test=data

losses=['hinge','squared_hinge']

for loss in losses:

cls=svm.linearsvc(loss=loss)

cls.fit(x_train,y_train)

print('loss:%s'%loss)

print('coefficients:%s,intercept %s'%(cls.coef_,cls.intercept_))

print('score:%.2f'%cls.score(x_test,y_test))

test_linearsvc_loss(x_train,x_test,y_train,y_test)

罰項形式的影響

def

test_linearsvc_l12

(*data):

x_train,x_test,y_train,y_test=data

l12=['l1','l2']

for p in l12:

cls=svm.linearsvc(penalty=p,dual=false)

cls.fit(x_train,y_train)

print('penalty:%s'%p)

print('coefficients:%s,intercept %s'%(cls.coef_,cls.intercept_))

print('score:%.2f'%cls.score(x_test,y_test))

test_linearsvc_l12(x_train,x_test,y_train,y_test)

罰項係數c的影響

def

test_linearsvc_c

(*data):

x_train,x_test,y_train,y_test=data

cs=np.logspace(-2,1)

train_scores=

test_scores=

for c in cs:

cls=svm.linearsvc(c=c)

cls.fit(x_train,y_train)

fig=plt.figure()

ax=fig.add_subplot(1,1,1)

ax.plot(cs,train_scores,label='training score')

ax.plot(cs,test_scores,label='testing score')

ax.set_xlabel(r'c')

ax.set_ylabel(r'score')

ax.set_xscale('log')

ax.set_title('linearsvc')

ax.legend(loc='best')

plt.show()

test_linearsvc_c(x_train,x_test,y_train,y_test)

SVM 支援向量機(一)線性SVM分類

svm 支援向量機 svm support vector machine 支援向量機,是乙個功能非常強大的機器學習模型,可以處理線性與非線性的分類 回歸,甚至是異常檢測。它也是機器學習中非常熱門的演算法之一,特別適用於複雜的分類問題,並且資料集為小型 或中型的資料集。這章我們會解釋svm裡的核心概念...

分類 SVM 支援向量機

svm,support vector machine,可用於模式分類和非線性回歸。支援向量機的主要思想是建立乙個分類超平面作為決策曲面,使得正例和反例之間的隔離邊緣被最大化。支援向量機的理論基礎是統計學習理論,更精確的說,支援向量機是結構風險最小化的近似實現。這個原理基於這樣的事實 學習機器在測試資...

分類演算法SVM(支援向量機

支援向量機 support vector machine svm 的主要思想是 建立乙個最優決策超平面,使得該平面兩側距離該平面最近的兩類樣本之間的距離最大化,從而對分類問題提供良好的泛化能力。對於乙個多維的樣本集,系統隨機產生乙個超平面並不斷移動,對樣本進行分類,直到訓練樣本中屬於不同類別的樣本點...