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
fit
中sample_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
用於
score
中sample_weight
參數的中繼資料路由。
- 傳回值:
- self物件
更新後的物件。