LabelBinarizer#
- class sklearn.preprocessing.LabelBinarizer(*, neg_label=0, pos_label=1, sparse_output=False)[source]#
以一對多的方式二元化標籤。
scikit-learn 中提供了多種迴歸和二元分類演算法。將這些演算法擴展到多類別分類情況的一種簡單方法是使用所謂的一對多方案。
在學習時,這僅僅包括學習每個類別的一個迴歸器或二元分類器。這樣做,需要將多類別標籤轉換為二元標籤(屬於或不屬於該類別)。
LabelBinarizer
可以透過 transform 方法輕鬆完成此過程。在預測時,會將對應模型給出最大信心的類別指定給該樣本。
LabelBinarizer
使用inverse_transform
方法可以輕鬆實現這一點。請參閱使用者指南以了解更多資訊。
- 參數:
- neg_labelint,預設值 = 0
用於編碼負標籤的值。
- pos_labelint,預設值 = 1
用於編碼正標籤的值。
- sparse_outputbool,預設值 = False
若希望 transform 方法返回的陣列為稀疏 CSR 格式,則設為 True。
- 屬性:
- classes_形狀為 (n_classes,) 的 ndarray
保存每個類別的標籤。
- y_type_str
表示目標資料的類型,由
type_of_target
評估。可能的類型包括 ‘continuous’、‘continuous-multioutput’、‘binary’、‘multiclass’、‘multiclass-multioutput’、‘multilabel-indicator’ 和 ‘unknown’。- sparse_input_bool
- 如果 transform 的輸入資料是稀疏矩陣,則為
True
, 否則為
False
。
- 如果 transform 的輸入資料是稀疏矩陣,則為
另請參閱
label_binarize
使用固定類別執行 LabelBinarizer 轉換操作的函數。
OneHotEncoder
使用 one-hot (又稱 one-of-K) 方案編碼類別特徵。
範例
>>> from sklearn.preprocessing import LabelBinarizer >>> lb = LabelBinarizer() >>> lb.fit([1, 2, 6, 4, 2]) LabelBinarizer() >>> lb.classes_ array([1, 2, 4, 6]) >>> lb.transform([1, 6]) array([[1, 0, 0, 0], [0, 0, 0, 1]])
二元目標轉換為單欄向量
>>> lb = LabelBinarizer() >>> lb.fit_transform(['yes', 'no', 'no', 'yes']) array([[1], [0], [0], [1]])
傳遞用於多標籤分類的 2D 矩陣
>>> import numpy as np >>> lb.fit(np.array([[0, 1, 1], [1, 0, 0]])) LabelBinarizer() >>> lb.classes_ array([0, 1, 2]) >>> lb.transform([0, 1, 2, 1]) array([[1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 1, 0]])
- fit(y)[原始碼]#
擬合標籤二元化器。
- 參數:
- y形狀為 (n_samples,) 或 (n_samples, n_classes) 的 ndarray
目標值。2-d 矩陣應僅包含 0 和 1,代表多標籤分類。
- 回傳值:
- self物件
回傳實例本身。
- fit_transform(y)[原始碼]#
擬合標籤二元化器/將多類別標籤轉換為二元標籤。
transform 的輸出有時被稱為 1-of-K 編碼方案。
- 參數:
- y形狀為 (n_samples,) 或 (n_samples, n_classes) 的 {ndarray, 稀疏矩陣}
目標值。2-d 矩陣應僅包含 0 和 1,代表多標籤分類。稀疏矩陣可以是 CSR、CSC、COO、DOK 或 LIL。
- 回傳值:
- Y形狀為 (n_samples, n_classes) 的 {ndarray, 稀疏矩陣}
對於二元問題,形狀將為 (n_samples, 1)。稀疏矩陣將為 CSR 格式。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看使用者指南以了解路由機制如何運作。
- 回傳值:
- routingMetadataRequest
一個封裝路由資訊的
MetadataRequest
。
- get_params(deep=True)[原始碼]#
取得此估算器的參數。
- 參數:
- deepbool,預設值 = True
若為 True,將傳回此估算器及其包含的子物件 (也是估算器) 的參數。
- 回傳值:
- paramsdict
參數名稱對應到其值的字典。
- inverse_transform(Y, threshold=None)[原始碼]#
將二元標籤轉換回多類別標籤。
- 參數:
- Y形狀為 (n_samples, n_classes) 的 {ndarray, 稀疏矩陣}
目標值。所有稀疏矩陣在反轉換前都會轉換為 CSR 格式。
- thresholdfloat,預設值 = None
用於二元和多標籤案例中的臨界值。
當
Y
包含 decision_function (分類器) 的輸出時,使用 0。當Y
包含 predict_proba 的輸出時,使用 0.5。如果為 None,則假定臨界值在 neg_label 和 pos_label 的中間。
- 回傳值:
- y形狀為 (n_samples,) 的 {ndarray, 稀疏矩陣}
目標值。稀疏矩陣將為 CSR 格式。
註解
在二元標籤為分數(機率)的情況下,
inverse_transform
會選擇值最大的類別。通常,這允許直接使用線性模型的 decision_function 方法的輸出作為inverse_transform
的輸入。
- set_inverse_transform_request(*, threshold: bool | None | str = '$UNCHANGED$') LabelBinarizer [原始碼]#
請求傳遞到
inverse_transform
方法的中繼資料。請注意,此方法僅在
enable_metadata_routing=True
時適用(請參閱sklearn.set_config
)。請參閱 使用者指南,了解路由機制的運作方式。每個參數的選項如下:
True
:請求元數據,並在提供時傳遞給inverse_transform
。如果未提供元數據,則會忽略請求。False
:不請求元數據,且元估計器不會將其傳遞給inverse_transform
。None
:不請求元數據,如果使用者提供,元估計器會引發錯誤。str
:元數據應以給定的別名(而非原始名稱)傳遞給元估計器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 會保留現有的請求。這允許您變更某些參數的請求,而不變更其他參數的請求。於 1.3 版本新增。
注意
此方法僅在將此估計器用作元估計器的子估計器時相關,例如在
Pipeline
中使用。否則,它不會產生任何作用。- 參數:
- thresholdstr、True、False 或 None,預設值=sklearn.utils.metadata_routing.UNCHANGED
針對
inverse_transform
中threshold
參數的元數據路由。
- 回傳值:
- self物件
更新後的物件。
- set_output(*, transform=None)[原始碼]#
設定輸出容器。
請參閱 「介紹 set_output API」,以取得如何使用 API 的範例。
- 參數:
- transform{“default”, “pandas”, “polars”},預設值=None
設定
transform
和fit_transform
的輸出。"default"
:轉換器的預設輸出格式"pandas"
:DataFrame 輸出"polars"
:Polars 輸出None
:轉換設定保持不變
於 1.4 版本新增:新增了
"polars"
選項。
- 回傳值:
- self估計器實例
估計器實例。