NuSVC#

class sklearn.svm.NuSVC(*, nu=0.5, 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)[原始碼]#

Nu-支援向量分類。

與 SVC 類似,但使用參數來控制支援向量的數量。

此實作基於 libsvm。

請在使用者指南中閱讀更多資訊。

參數:
nufloat,預設值=0.5

邊界錯誤比例的上限(請參閱使用者指南)以及支援向量比例的下限。應介於 (0, 1] 區間。

kernel{‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’} 或可呼叫物件,預設值=’rbf’

指定演算法中使用的核心類型。如果未指定,將使用 'rbf'。如果給定可呼叫物件,則用於預先計算核心矩陣。如需不同核心類型的直觀視覺化,請參閱使用不同 SVM 核心繪製分類邊界

degreeint,預設值=3

多項式核心函數 ('poly') 的次數。必須是非負數。所有其他核心都會忽略此參數。

gamma{‘scale’, ‘auto’} 或 float,預設值=’scale’

'rbf'、'poly' 和 'sigmoid' 的核心係數。

  • 如果傳遞 gamma='scale'(預設值),則使用 1 / (n_features * X.var()) 作為 gamma 的值,

  • 如果為 'auto',則使用 1 / n_features

  • 如果為 float,則必須是非負數。

變更於 0.22 版本:gamma 的預設值從 'auto' 變更為 'scale'。

coef0float,預設值=0.0

核心函數中的獨立項。它僅在 'poly' 和 'sigmoid' 中有意義。

shrinkingbool,預設值=True

是否使用縮減啟發式方法。請參閱使用者指南

probabilitybool,預設值=False

是否啟用機率估計。這必須在呼叫 fit 之前啟用,因為它內部使用 5 折交叉驗證,因此會減慢該方法的速度,並且 predict_proba 可能與 predict 不一致。請在使用者指南中閱讀更多資訊。

tolfloat,預設值=1e-3

停止條件的容差。

cache_sizefloat,預設值=200

指定核心快取的大小(以 MB 為單位)。

class_weight{dict, ‘balanced’},預設值=None

將類別 i 的參數 C 設定為 SVC 的 class_weight[i]*C。如果未給定,則假設所有類別的權重為 1。「balanced」模式使用 y 的值來自動調整權重,該權重與類別頻率成反比,如 n_samples / (n_classes * np.bincount(y))

verbosebool,預設值=False

啟用詳細輸出。請注意,此設定會利用 libsvm 中每個處理序的執行階段設定,如果啟用,則可能無法在多執行緒環境中正常運作。

max_iterint,預設值=-1

求解器內的迭代次數的硬性限制,若為 -1 則不限制。

decision_function_shape{‘ovo’, ‘ovr’},預設值=’ovr’

是否像所有其他分類器一樣傳回形狀為 (n_samples, n_classes) 的一對多 ('ovr') 決策函數,或是傳回 libsvm 的原始一對一 ('ovo') 決策函數,其形狀為 (n_samples, n_classes * (n_classes - 1) / 2)。然而,一對一 ('ovo') 始終用作多類策略。此參數在二元分類中會被忽略。

變更於 0.19 版本:decision_function_shape 預設為 'ovr'。

新增於 0.17 版本:建議使用decision_function_shape='ovr'

變更於 0.17 版本:已棄用 decision_function_shape='ovo' 和 None

break_tiesbool,預設值=False

如果為 true,decision_function_shape='ovr',且類別數 > 2,則 predict 會根據 decision_function 的信賴度值來打破平手;否則會傳回平手類別中的第一個類別。請注意,與簡單的 predict 相比,打破平手的運算成本相對較高。如需使用 decision_function_shape='ovr' 的範例,請參閱SVM 平手打破範例

新增於 0.22 版本。

random_stateint、RandomState 實例或 None,預設值=None

控制用於隨機排序資料以進行機率估計的虛擬亂數產生。當 probability 為 False 時會忽略。傳遞 int 以跨多個函數呼叫產生可重複的輸出。請參閱術語表

屬性:
class_weight_形狀為 (n_classes,) 的 ndarray

每個類別的參數 C 的乘數。根據 class_weight 參數計算得出。

classes_形狀為 (n_classes,) 的 ndarray

唯一的類別標籤。

coef_形狀為 (n_classes * (n_classes -1) / 2, n_features) 的 ndarray

kernel="linear" 時,賦予特徵的權重。

dual_coef_形狀為 (n_classes - 1, n_SV) 的 ndarray

決策函數中支持向量的對偶係數(請參閱數學公式),並乘以其目標值。對於多類別,是所有 1 對 1 分類器的係數。在多類別情況下,係數的佈局有些複雜。請參閱使用者指南的多類別章節以了解詳細資訊。

fit_status_整數

如果正確擬合則為 0,如果演算法未收斂則為 1。

intercept_形狀為 (n_classes * (n_classes - 1) / 2,) 的 ndarray

決策函數中的常數。

n_features_in_整數

fit 期間看到的特徵數量。

在 0.24 版本中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit 期間看到的特徵名稱。僅當 X 具有全為字串的特徵名稱時定義。

在 1.0 版本中新增。

n_iter_形狀為 (n_classes * (n_classes - 1) // 2,) 的 ndarray

為了擬合模型,最佳化常式執行的迭代次數。此屬性的形狀取決於最佳化的模型數量,而模型數量又取決於類別數量。

在 1.1 版本中新增。

support_形狀為 (n_SV,) 的 ndarray

支持向量的索引。

support_vectors_形狀為 (n_SV, n_features) 的 ndarray

支持向量。

n_support_形狀為 (n_classes,),dtype=int32 的 ndarray

每個類別的支持向量數量。

fit_status_整數

如果正確擬合則為 0,如果演算法未收斂則為 1。

probA_形狀為 (n_classes * (n_classes - 1) / 2,) 的 ndarray

probability=True 時,在普拉特縮放 (Platt scaling) 中學習的參數。

probB_形狀為 (n_classes * (n_classes - 1) / 2,) 的 ndarray

probability=True 時,在普拉特縮放 (Platt scaling) 中學習的參數。

shape_fit_形狀為 (n_dimensions_of_X,) 的整數元組

訓練向量 X 的陣列維度。

另請參閱

支持向量分類器 (SVC)

使用 libsvm 進行分類的支持向量機。

線性支持向量分類器 (LinearSVC)

使用 liblinear 進行分類的可擴展線性支持向量機。

參考文獻

範例

>>> import numpy as np
>>> X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])
>>> y = np.array([1, 1, 2, 2])
>>> from sklearn.pipeline import make_pipeline
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.svm import NuSVC
>>> clf = make_pipeline(StandardScaler(), NuSVC())
>>> clf.fit(X, y)
Pipeline(steps=[('standardscaler', StandardScaler()), ('nusvc', NuSVC())])
>>> print(clf.predict([[-0.8, -1]]))
[1]
property coef_#

kernel="linear" 時,賦予特徵的權重。

傳回值:
形狀為 (n_features, n_classes) 的 ndarray
decision_function(X)[原始碼]#

評估 X 中樣本的決策函數。

參數:
X形狀為 (n_samples, n_features) 的類陣列

輸入樣本。

傳回值:
X形狀為 (n_samples, n_classes * (n_classes-1) / 2) 的 ndarray

傳回模型中每個類別的樣本決策函數。如果 decision_function_shape=’ovr’,則形狀為 (n_samples, n_classes)。

注意事項

如果 decision_function_shape=’ovo’,則函數值與樣本 X 到分離超平面的距離成正比。如果需要精確的距離,請將函數值除以權重向量 (coef_) 的範數。另請參閱 此問題 以了解更多詳細資訊。如果 decision_function_shape=’ovr’,則決策函數是 ovo 決策函數的單調轉換。

fit(X, y, sample_weight=None)[原始碼]#

根據給定的訓練資料擬合 SVM 模型。

參數:
X形狀為 (n_samples, n_features) 或 (n_samples, n_samples) 的 {類陣列, 稀疏矩陣}

訓練向量,其中 n_samples 是樣本數,n_features 是特徵數。對於 kernel=”precomputed”,X 的預期形狀為 (n_samples, n_samples)。

y形狀為 (n_samples,) 的類陣列

目標值(分類中的類別標籤,迴歸中的實數)。

sample_weight形狀為 (n_samples,) 的類陣列,預設值為 None

每個樣本的權重。每個樣本重新縮放 C。較高的權重會迫使分類器更加重視這些點。

傳回值:
self物件

擬合的估計器。

注意事項

如果 X 和 y 不是 np.float64 的 C 順序和連續陣列,並且 X 不是 scipy.sparse.csr_matrix,則可能會複製 X 和/或 y。

如果 X 是密集陣列,則其他方法將不支援將稀疏矩陣作為輸入。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請查看使用者指南,以了解路由機制的運作方式。

傳回值:
routingMetadataRequest

一個封裝路由資訊的 MetadataRequest

get_params(deep=True)[原始碼]#

取得此估計器的參數。

參數:
deep布林值,預設值為 True

如果為 True,將傳回此估計器及其包含的子物件(估計器)的參數。

傳回值:
params字典

對應到值的參數名稱。

property n_support_#

每個類別的支持向量數量。

predict(X)[原始碼]#

對 X 中的樣本執行分類。

對於單類模型,會返回 +1 或 -1。

參數:
X形狀為 (n_samples, n_features) 或 (n_samples_test, n_samples_train) 的類陣列 (array-like) 或稀疏矩陣 (sparse matrix)

對於 kernel="precomputed",X 的預期形狀為 (n_samples_test, n_samples_train)。

傳回值:
y_pred形狀為 (n_samples,) 的 ndarray

X 中樣本的類別標籤。

predict_log_proba(X)[原始碼]#

計算 X 中樣本可能結果的對數機率。

模型需要在訓練時計算機率資訊:使用設定為 True 的屬性 probability 進行擬合。

參數:
X形狀為 (n_samples, n_features) 或 (n_samples_test, n_samples_train) 的類陣列 (array-like)

對於 kernel="precomputed",X 的預期形狀為 (n_samples_test, n_samples_train)。

傳回值:
T形狀為 (n_samples, n_classes) 的 ndarray

返回模型中每個類別的樣本對數機率。這些列對應於屬性 classes_ 中按排序順序出現的類別。

注意事項

機率模型是使用交叉驗證建立的,因此結果可能與透過 predict 獲得的結果略有不同。此外,在非常小的資料集上,它會產生無意義的結果。

predict_proba(X)[原始碼]#

計算 X 中樣本可能結果的機率。

模型需要在訓練時計算機率資訊:使用設定為 True 的屬性 probability 進行擬合。

參數:
X形狀為 (n_samples, n_features) 的類陣列

對於 kernel="precomputed",X 的預期形狀為 (n_samples_test, n_samples_train)。

傳回值:
T形狀為 (n_samples, n_classes) 的 ndarray

返回模型中每個類別的樣本機率。這些列對應於屬性 classes_ 中按排序順序出現的類別。

注意事項

機率模型是使用交叉驗證建立的,因此結果可能與透過 predict 獲得的結果略有不同。此外,在非常小的資料集上,它會產生無意義的結果。

property probA_#

probability=True 時,在普拉特縮放 (Platt scaling) 中學習的參數。

傳回值:
形狀為 (n_classes * (n_classes - 1) / 2) 的 ndarray
property probB_#

probability=True 時,在普拉特縮放 (Platt scaling) 中學習的參數。

傳回值:
形狀為 (n_classes * (n_classes - 1) / 2) 的 ndarray
score(X, y, sample_weight=None)[原始碼]#

返回給定測試資料和標籤的平均準確度。

在多標籤分類中,這是子集準確度,這是一個嚴苛的指標,因為您要求每個樣本的每個標籤集都被正確預測。

參數:
X形狀為 (n_samples, n_features) 的類陣列

測試樣本。

y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列 (array-like)

X 的真實標籤。

sample_weight形狀為 (n_samples,) 的類陣列,預設值為 None

樣本權重。

傳回值:
score浮點數 (float)

self.predict(X) 相對於 y 的平均準確度。

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') NuSVC[原始碼]#

請求傳遞給 fit 方法的中繼資料。

請注意,只有在 enable_metadata_routing=True 時,此方法才相關(請參閱 sklearn.set_config)。請參閱關於路由機制如何運作的 使用者指南

每個參數的選項為

  • True:請求中繼資料,如果提供,則傳遞給 fit。如果未提供中繼資料,則會忽略該請求。

  • False:不請求中繼資料,並且 meta-estimator 不會將其傳遞給 fit

  • None:不請求中繼資料,如果使用者提供,meta-estimator 會引發錯誤。

  • str:中繼資料應該使用此給定別名而不是原始名稱傳遞給 meta-estimator。

預設值 (sklearn.utils.metadata_routing.UNCHANGED) 會保留現有的請求。這可讓您變更某些參數的請求,而不變更其他參數的請求。

在 1.3 版中新增。

注意

只有當此估算器用作 meta-estimator 的子估算器時(例如,在 Pipeline 內部使用),此方法才相關。否則,它沒有任何作用。

參數:
sample_weightstr、True、False 或 None,預設值=sklearn.utils.metadata_routing.UNCHANGED

fitsample_weight 參數的中繼資料路由。

傳回值:
self物件

更新後的物件。

set_params(**params)[原始碼]#

設定此估算器的參數。

此方法適用於簡單的估算器以及巢狀物件(例如 Pipeline)。後者具有 <component>__<parameter> 形式的參數,因此可以更新巢狀物件的每個組件。

參數:
**paramsdict

估算器參數。

傳回值:
self估算器實例

估算器實例。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') NuSVC[原始碼]#

請求傳遞至 score 方法的中繼資料。

請注意,只有在 enable_metadata_routing=True 時,此方法才相關(請參閱 sklearn.set_config)。請參閱關於路由機制如何運作的 使用者指南

每個參數的選項為

  • True:請求中繼資料,並在提供時傳遞給 score。如果未提供中繼資料,則會忽略該請求。

  • False:不請求中繼資料,並且元估算器不會將其傳遞給 score

  • None:不請求中繼資料,如果使用者提供,meta-estimator 會引發錯誤。

  • str:中繼資料應該使用此給定別名而不是原始名稱傳遞給 meta-estimator。

預設值 (sklearn.utils.metadata_routing.UNCHANGED) 會保留現有的請求。這可讓您變更某些參數的請求,而不變更其他參數的請求。

在 1.3 版中新增。

注意

只有當此估算器用作 meta-estimator 的子估算器時(例如,在 Pipeline 內部使用),此方法才相關。否則,它沒有任何作用。

參數:
sample_weightstr、True、False 或 None,預設值=sklearn.utils.metadata_routing.UNCHANGED

用於 scoresample_weight 參數的中繼資料路由。

傳回值:
self物件

更新後的物件。