OneVsOneClassifier#

class sklearn.multiclass.OneVsOneClassifier(estimator, *, n_jobs=None)[原始碼]#

一對一多類別策略。

此策略的作法是為每個類別配對擬合一個分類器。在預測時,會選擇獲得最多票數的類別。由於它需要擬合 n_classes * (n_classes - 1) / 2 個分類器,因此此方法通常比一對其他方法慢,因為其複雜度為 O(n_classes^2)。然而,對於諸如核演算法之類不擅長處理 n_samples 擴展的演算法而言,此方法可能具有優勢。這是因為每個個別的學習問題僅涉及資料的一小部分,而使用一對其他方法時,則會使用完整的資料集 n_classes 次。

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

參數:
estimator估計器物件

實作 fit 的迴歸器或分類器。當傳遞分類器時,將優先使用 decision_function,如果它不可用,則會回退到 predict_proba。當傳遞迴歸器時,則會使用 predict

n_jobsint,預設值為 None

用於計算的作業數量:將並行計算 n_classes * ( n_classes - 1) / 2 個 OVO 問題。

None 表示 1,除非在 joblib.parallel_backend 環境中。-1 表示使用所有處理器。請參閱 詞彙表以取得更多詳細資訊。

屬性:
estimators_n_classes * (n_classes - 1) / 2 個估計器的列表

用於預測的估計器。

classes_形狀為 [n_classes] 的 numpy 陣列

包含標籤的陣列。

n_classes_int

類別數量。

pairwise_indices_列表,長度 = len(estimators_),或 None

訓練估計器時使用的樣本索引。當 estimatorpairwise 標籤為 False 時,則為 None

n_features_in_int

fit 期間看到的特徵數量。

在版本 0.24 中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit 期間看到的特徵名稱。只有在 X 具有全部都是字串的特徵名稱時才會定義。

在版本 1.0 中新增。

另請參閱

一對餘分類器 (OneVsRestClassifier)

一對其他多類別策略。

輸出碼分類器 (OutputCodeClassifier)

(錯誤校正) 輸出碼多類別策略。

範例

>>> from sklearn.datasets import load_iris
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.multiclass import OneVsOneClassifier
>>> from sklearn.svm import LinearSVC
>>> X, y = load_iris(return_X_y=True)
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, test_size=0.33, shuffle=True, random_state=0)
>>> clf = OneVsOneClassifier(
...     LinearSVC(random_state=0)).fit(X_train, y_train)
>>> clf.predict(X_test[:10])
array([2, 1, 0, 2, 0, 2, 0, 1, 1, 1])
decision_function(X)[來源]#

OneVsOneClassifier 的決策函數。

樣本的決策值是透過將配對分類信賴度等級的正規化總和新增至投票來計算,以便在所有類別的投票相等導致平局時消除決策值之間的歧義。

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

輸入資料。

傳回值:
Y形狀為 (n_samples, n_classes) 或 (n_samples,) 的類陣列

在最終估計器上呼叫 decision_function 的結果。

在 0.19 版中變更:輸出形狀已變更為 (n_samples,),以符合 scikit-learn 對二元分類的慣例。

fit(X, y, **fit_params)[來源]#

擬合基礎估計器。

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

資料。

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

多類別目標。

**fit_paramsdict

傳遞給每個子估計器的 estimator.fit 方法的參數。

在 1.4 版中新增:僅在 enable_metadata_routing=True 時可用。請參閱中繼資料路由使用者指南以取得更多詳細資訊。

傳回值:
self物件

已擬合的基礎估計器。

get_metadata_routing()[來源]#

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

請查看使用者指南,了解路由機制如何運作。

在 1.4 版中新增。

傳回值:
routingMetadataRouter

一個封裝路由資訊的 MetadataRouter

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

取得此估計器的參數。

參數:
deepbool,預設值為 True

若為 True,將會回傳此估計器以及包含的子物件(亦為估計器)的參數。

傳回值:
paramsdict

參數名稱對應到其值的字典。

property n_classes_#

類別數量。

partial_fit(X, y, classes=None, **partial_fit_params)[原始碼]#

部分擬合底層的估計器。

當記憶體不足以訓練所有資料時應使用此方法。資料區塊可以在多次迭代中傳遞,其中第一次呼叫應具有所有目標變數的陣列。

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

資料。

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

多類別目標。

classes陣列,形狀為 (n_classes, )

跨越所有 partial_fit 呼叫的類別。可以透過 np.unique(y_all) 取得,其中 y_all 是整個資料集的目標向量。此參數僅在第一次呼叫 partial_fit 時是必須的,並且可以在後續呼叫中省略。

**partial_fit_paramsdict

傳遞到每個子估計器的 estimator.partial_fit 方法的參數。

在 1.4 版中新增:僅在 enable_metadata_routing=True 時可用。請參閱中繼資料路由使用者指南以取得更多詳細資訊。

傳回值:
self物件

部分擬合的底層估計器。

predict(X)[原始碼]#

估計 X 中每個樣本的最佳類別標籤。

這是透過 argmax(decision_function(X), axis=1) 實作,它會回傳類別標籤,該類別的估計器在預測每個可能的類別配對的決策結果時獲得最多票數。

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

資料。

傳回值:
y形狀為 [n_samples] 的 numpy 陣列

預測的多類別目標。

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

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

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

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

測試樣本。

y類陣列,形狀為 (n_samples,) 或 (n_samples, n_outputs)

X 的真實標籤。

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

樣本權重。

傳回值:
score浮點數

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

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

設定此估計器的參數。

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

參數:
**paramsdict

估計器參數。

傳回值:
self估計器實例

估計器實例。

set_partial_fit_request(*, classes: bool | None | str = '$UNCHANGED$') OneVsOneClassifier[原始碼]#

要求傳遞到 partial_fit 方法的中繼資料。

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

每個參數的選項為

  • True:要求提供元數據,如果有的話,將傳遞給 partial_fit。如果未提供元數據,則會忽略此請求。

  • False:不要求提供元數據,且 meta-estimator 不會將其傳遞給 partial_fit

  • None:不要求提供元數據,如果使用者提供元數據,則 meta-estimator 會引發錯誤。

  • str:元數據應以這個給定的別名傳遞給 meta-estimator,而不是原始名稱。

預設值 (sklearn.utils.metadata_routing.UNCHANGED) 保留現有的請求。這允許您更改某些參數的請求,而不是其他參數的請求。

在 1.3 版本中新增。

注意

只有在將此估算器用作 meta-estimator 的子估算器時,此方法才相關,例如在 Pipeline 中使用。否則它不會產生任何影響。

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

partial_fitclasses 參數的元數據路由。

傳回值:
self物件

更新後的物件。

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

請求傳遞到 score 方法的元數據。

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

每個參數的選項為

  • True:要求提供元數據,如果有的話,將傳遞給 score。如果未提供元數據,則會忽略此請求。

  • False:不要求提供元數據,且 meta-estimator 不會將其傳遞給 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物件

更新後的物件。