模型原型
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 的主要思想是 建立乙個最優決策超平面,使得該平面兩側距離該平面最近的兩類樣本之間的距離最大化,從而對分類問題提供良好的泛化能力。對於乙個多維的樣本集,系統隨機產生乙個超平面並不斷移動,對樣本進行分類,直到訓練樣本中屬於不同類別的樣本點...