當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn LinearSVC用法及代碼示例


本文簡要介紹python語言中 sklearn.svm.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)

線性支持向量分類。

與參數 kernel='linear' 的 SVC 類似,但根據 liblinear 而不是 libsvm 實現,因此它在選擇懲罰和損失函數方掩碼有更大的靈活性,並且應該更好地擴展到大量樣本。

此類支持密集和稀疏輸入,並且多類支持根據one-vs-the-rest 方案處理。

在用戶指南中閱讀更多信息。

參數

penalty{‘l1’, ‘l2’},默認='l2'

指定懲罰中使用的規範。 ‘l2’ 懲罰是 SVC 中使用的標準。 ‘l1’ 導致稀疏的 coef_ 向量。

loss{‘hinge’, ‘squared_hinge’},默認='squared_hinge'

指定損失函數。 ‘hinge’ 是標準 SVM 損失(例如由 SVC 類使用),而 ‘squared_hinge’ 是鉸鏈損失的平方。不支持penalty='l1'loss='hinge' 的組合。

dual布爾,默認=真

選擇算法來解決對偶或原始優化問題。當 n_samples > n_features 時首選 dual=False。

tol浮點數,默認=1e-4

停止標準的公差。

C浮點數,默認=1.0

正則化參數。正則化的強度與 C 成反比。必須嚴格為正。

multi_class{‘ovr’, ‘crammer_singer’},默認='ovr'

如果 y 包含兩個以上類,則確定多類策略。 "ovr" 訓練 n_classes one-vs-rest 分類器,而 "crammer_singer" 優化所有類的聯合目標。雖然crammer_singer 從理論角度來看很有趣,因為它是一致的,但在實踐中很少使用它,因為它很少會帶來更好的準確性並且計算成本更高。如果選擇"crammer_singer",則選項loss、penalty和dual將被忽略。

fit_intercept布爾,默認=真

是否計算此模型的截距。如果設置為 false,則不會在計算中使用截距(即數據預計已經居中)。

intercept_scaling浮點數,默認=1

當 self.fit_intercept 為 True 時,實例向量 x 變為 [x, self.intercept_scaling] ,即將具有等於 intercept_scaling 的常數值的 “synthetic” 特征附加到實例向量。截距變為intercept_scaling * 合成特征權重 注意!合成特征權重像所有其他特征一樣受到 l1/l2 正則化。為了減少正則化對合成特征權重(以及因此對截距)的影響,必須增加intercept_scaling。

class_weightdict或‘balanced’,默認=無

對於 SVC,將第 i 類的參數 C 設置為class_weight[i]*C。如果沒有給出,所有的類都應該有一個權重。 “balanced” 模式使用 y 的值自動調整與輸入數據中的類頻率成反比的權重,如 n_samples / (n_classes * np.bincount(y))

verbose整數,默認=0

啟用詳細輸出。請注意,此設置利用了 liblinear 中的 per-process 運行時設置,如果啟用,該設置可能無法在多線程上下文中正常工作。

random_stateint、RandomState 實例或無,默認=無

控製偽隨機數生成,以混洗雙坐標下降的數據(如果 dual=True )。當dual=False時,LinearSVC的底層實現不是隨機的,並且random_state對結果沒有影響。傳遞 int 以在多個函數調用之間實現可重現的輸出。請參閱術語表。

max_iter整數,默認=1000

要運行的最大迭代次數。

屬性

coef_ndarray of shape (1, n_features) if n_classes == 2 else (n_classes, n_features)

分配給特征的權重(原始問題中的係數)。

coef_ 是從 raw_coef_ 派生的隻讀屬性,它遵循 liblinear 的內部存儲器布局。

intercept_ndarray 形狀 (1,) if n_classes == 2 else (n_classes,)

決策函數中的常數。

classes_ndarray 形狀 (n_classes,)

唯一的類標簽。

n_features_in_int

擬合期間看到的特征數。

feature_names_in_ndarray 形狀(n_features_in_,)

擬合期間看到的特征名稱。僅當 X 具有全為字符串的函數名稱時才定義。

n_iter_int

在所有類中運行的最大迭代次數。

注意

底層 C 實現使用隨機數生成器在擬合模型時選擇特征。因此,對於相同的輸入數據,結果略有不同的情況並不少見。如果發生這種情況,請嘗試使用較小的 tol 參數。

底層實現,liblinear,對將導致內存複製的數據使用稀疏的內部表示。

在某些情況下,預測輸出可能與獨立 liblinear 的輸出不匹配。請參閱敘述文檔中與 liblinear 的區別。

參考

LIBLINEAR:大型線性分類庫

例子

>>> from sklearn.svm import LinearSVC
>>> from sklearn.pipeline import make_pipeline
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.datasets import make_classification
>>> X, y = make_classification(n_features=4, random_state=0)
>>> clf = make_pipeline(StandardScaler(),
...                     LinearSVC(random_state=0, tol=1e-5))
>>> clf.fit(X, y)
Pipeline(steps=[('standardscaler', StandardScaler()),
                ('linearsvc', LinearSVC(random_state=0, tol=1e-05))])
>>> print(clf.named_steps['linearsvc'].coef_)
[[0.141...   0.526... 0.679... 0.493...]]
>>> print(clf.named_steps['linearsvc'].intercept_)
[0.1693...]
>>> print(clf.predict([[0, 0, 0, 0]]))
[1]

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.svm.LinearSVC。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。