Sklearn參數詳解—SVM

2021-02-20 俊紅的數據分析之路

本篇主要講講Sklearn中SVM,SVM主要有LinearSVC、NuSVC和SVC三種方法,我們將具體介紹這三種分類方法都有哪些參數值以及不同參數值的含義。

在開始看本篇前你可以看看這篇:支持向量機詳解

LinearSVC

class 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)

penalty:正則化參數,L1和L2兩種參數可選,僅LinearSVC有。
loss:損失函數,有『hinge』和『squared_hinge』兩種可選,前者又稱L1損失,後者稱為L2損失,默認是是’squared_hinge』,其中hinge是SVM的標準損失,squared_hinge是hinge的平方。
dual:是否轉化為對偶問題求解,默認是True。
tol:殘差收斂條件,默認是0.0001,與LR中的一致。
C:懲罰係數,用來控制損失函數的懲罰係數,類似於LR中的正則化係數。
multi_class:負責多分類問題中分類策略制定,有『ovr』和『crammer_singer』 兩種參數值可選,默認值是』ovr』,'ovr'的分類原則是將待分類中的某一類當作正類,其他全部歸為負類,通過這樣求取得到每個類別作為正類時的正確率,取正確率最高的那個類別為正類;『crammer_singer』 是直接針對目標函數設置多個參數值,最後進行優化,得到不同類別的參數值大小。
fit_intercept:是否計算截距,與LR模型中的意思一致。
class_weight:與其他模型中參數含義一樣,也是用來處理不平衡樣本數據的,可以直接以字典的形式指定不同類別的權重,也可以使用balanced參數值。
verbose:是否冗餘,默認是False.
random_state:隨機種子的大小。
max_iter:最大迭代次數,默認是1000。

對象

coef_:各特徵的係數(重要性)。
intercept_:截距的大小(常數值)。

NuSVC

class sklearn.svm.NuSVC(nu=0.5, kernel='rbf', degree=3, gamma='auto', 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', random_state=None))

nu:訓練誤差部分的上限和支持向量部分的下限,取值在(0,1)之間,默認是0.5
kernel:核函數,核函數是用來將非線性問題轉化為線性問題的一種方法,默認是「rbf」核函數,常用的核函數有以下幾種:

表示解釋linear線性核函數poly多項式核函數rbf高斯核函數sigmodsigmod核函數precomputed自定義核函數

關於不同核函數之間的區別,可以參考這篇文章:https://blog.csdn.net/batuwuhanpei/article/details/52354822

degree:當核函數是多項式核函數的時候,用來控制函數的最高次數。(多項式核函數是將低維的輸入空間映射到高維的特徵空間)
gamma:核函數係數,默認是「auto」,即特徵維度的倒數。
coef0:核函數常數值(y=kx+b中的b值),只有『poly』和『sigmoid』核函數有,默認值是0。
max_iter:最大迭代次數,默認值是-1,即沒有限制。
probability:是否使用概率估計,默認是False。
decision_function_shape:與'multi_class'參數含義類似。
cache_size:緩衝大小,用來限制計算量大小,默認是200M。

對象

support_:以數組的形式返回支持向量的索引。
support_vectors_:返回支持向量。
n_support_:每個類別支持向量的個數。
dual_coef_:支持向量係數。
coef_:每個特徵係數(重要性),只有核函數是LinearSVC的時候可用。
intercept_:截距值(常數值)。

SVC

class sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma='auto', 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', random_state=None)

C:懲罰係數。
SVC和NuSVC方法基本一致,唯一區別就是損失函數的度量方式不同(NuSVC中的nu參數和SVC中的C參數)。

方法

三種分類方法的方法基本一致,所以就一起來說啦。

decision_function(X):獲取數據集X到分離超平面的距離。
fit(X, y):在數據集(X,y)上使用SVM模型。
get_params([deep]):獲取模型的參數。
predict(X):預測數據值X的標籤。
score(X,y):返回給定測試集和對應標籤的平均準確率。

你還可以看:

Sklearn參數詳解—LR模型

Sklearn參數詳解--決策樹

相關焦點

  • Sklearn參數詳解—GBDT
    class sklearn.ensemble.GradientBoostingClassifier(loss='deviance', learning_rate=0.1, n_estimators=100, subsample=1.0, criterion='friedman_mse', min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf
  • 機器學習實戰 | 支持向量機·sklearn 參數詳解
    SVCSVC 的 sklearn 接口class sklearn.svm.SVC(C=1.0, kernel=』rbf』, degree=3, gamma=』auto_deprecated』, coef0=0.0, shrinking=True, probability=False, tol=0.001, cache_size=200
  • 使用sklearn-svm進行多分類
    實際上,svm經過合適的設計也可以運用於多分類問題,sklearn中的svm模塊封裝了libsvm和liblinear,本節我們利用它進行多分類。SVM回顧SVM算法最初是為二值分類問題設計的,當處理多類問題時,就需要構造合適的多類分類器。
  • Python機器學習筆記:SVM-sklearn實現 (4)FlyAI
    上面將SVM再贅述了一下,下面學習sklearn中的SVM方法,sklearn中SVM的算法庫分為兩類,一類是分類的算法庫,主要包含LinearSVC,NuSVC和SVC三個類,另一類是回歸算法庫,包含SVR,NuSVR和LinearSVR三個類,相關模塊都包裹在sklearn.svm模塊中。
  • 支持向量機SVM原理(參數解讀和python腳本)
    sklearn默認C參數是1"""@author: QQ:231469242"""from sklearn import preprocessingfrom sklearn.svm import SVCfrom
  • Sklearn參數詳解--決策樹
    你也可以看這裡:決策樹詳解決策樹-CART算法參數詳解sklearn.tree.DecisionTreeClassifier        (criterion='gini', splitter='best', max_depth=None, min_samples_split=2,        min_samples_leaf
  • sklearn學習(五):支持向量機原理實現及簡單參數優化(附代碼)
    支持向量機加優化加交叉驗證代碼首先我們實現一個簡單的SVMimport pandas as pdimport numpy as npfrom sklearn.model_selection import train_test_splitfrom sklearn import svm#讀取數據
  • 機器學習之分類算法:SVM [5. 實例解析]
    Python版本:使用的類:class sklearn.svm.SVC#導入數據集from sklearn.datasets import load_irisiris = load_iris()x = iris.data[:100]y = iris.target[:100]#建立模型from sklearn.svm import SVCclf = SVC(C
  • 機器學習之sklearn基礎教程!
    l1_ratio:彈性網絡參數,其中0 <= l1_ratio <=1。僅當penalty=「 elasticnet」時使用。3.2 參考文檔詳細解釋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
  • Sklearn包含的常用算法
    import QuadraticDiscriminantAnalysis>>> qda = QuadraticDiscriminantAnalysis(store_covariances=True)支持向量機(SVM)>>> from sklearn import svm>>
  • sklearn 與分類算法
    不常用的參數這裡就不再介紹,想要了解細節介紹,可以sklearn的官網查看。CNB 的發明者通過實驗結果表明,CNB 的參數估計比 MNB 的參數估計更穩定。此外,在文本分類任務上,CNB 通常比 MNB 表現得更好(通常是相當大的優勢)。
  • 機器學習模型評估與超參數調優詳解
    如果只有一個參數需要調整,那麼用驗證曲線手動調整是一個好方法,但是隨著需要調整的超參數越來越多的時候,我們能不能自動去調整呢?!!!(注意參數與超參數的區別:參數可以通過優化算法進行優化,如邏輯回歸的係數;超參數是不能用優化模型進行優化的,如正則話的係數。)
  • Python sklearn模型選擇
    : Random projection 隨機映射32.sklearn.semi_supervised: Semi-Supervised Learning 半監督學習33.sklearn.svm: Support Vector Machines 支持向量機34.sklearn.tree: Decision Tree 決策樹35.sklearn.utils: Utilities
  • 零基礎也教你玩轉SVM
    三 建模步驟使用SVM的一般步驟為:(1)讀取數據,將原始數據轉化為SVM算法軟體或包所能識別的數據格式;(2)將數據標準化;(防止樣本中不同特徵數值大小相差較大影響分類器性能)(3)選擇核函數,在不清楚何種核函數最佳時,推薦嘗試RBF(4)利用交叉驗證網格搜索尋找最優參數(C, γ);(交叉驗證防止過擬合,再利用網格搜索在指定範圍內尋找最優參數
  • SVM進行乳腺癌檢測!
    我們首先使用 SVC 的構造函數:model = svm.SVC(kernel=『rbf』, C=1.0, gamma=『auto』),這裡有三個重要的參數 kernel、C 和 gamma。kernel 代表核函數的選擇,它有四種選擇,只不過默認是 rbf,即高斯核函數。
  • SVM 支持向量機算法-實戰篇
    sklearn 庫的 svm 包中實現了下面四種 SVM 算法:LinearSVC:用於處理線性分類問題。SVC:用於處理非線性分類問題。[LinearSVC](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html)[SVC](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html)[LinearSVR
  • 【翻譯】Sklearn 與 TensorFlow 機器學習實用指南 —— 第5章( 上)支持向量機
    提示如果你的 SVM 模型過擬合,你可以嘗試通過減小超參數C去調整。以下的 Scikit-Learn 代碼加載了內置的鳶尾花(Iris)數據集,縮放特徵,並訓練一個線性 SVM 模型(使用LinearSVC類,超參數C=1,hinge 損失函數)來檢測 Virginica 鳶尾花,生成的模型在圖 5-4 的右圖。
  • 一文掌握sklearn中的支持向量機
    本節將在理論的基礎上,簡單介紹下sklearn中的支持向量機是如何實現數據分類的。並參照理論中的概念對應介紹重要參數的含義,以及如何調節參數,使得模型在數據集中得到更高的分數。下面先介紹sklearn.svm.SVC中的各個參數的含義。文章有點長,建議搜藏。
  • 15分鐘帶你入門sklearn與機器學習——分類算法篇
    不常用的參數這裡就不再介紹,想要了解細節介紹,可以sklearn的官網查看。CNB的發明者通過實驗結果表明,CNB的參數估計比MNB的參數估計更穩定。此外,在文本分類任務上,CNB通常比MNB表現得更好(通常是相當大的優勢)。
  • 機器學習中的參數調整
    前言我們知道每個模型都有很多參數是可以調節的,比如SVM中使用什麼樣的核函數以及C值的大小,決策樹中樹的深度等。在特徵選好、基礎模型選好以後我們可以通過調整模型的這些參數來提高模型準確率。每個模型有很多參數,而每個參數又有很多不同的取值,我們該怎麼調,最簡單的一個方法就是一個一個試。