MultiLabelBinarizer#

class sklearn.preprocessing.MultiLabelBinarizer(*, classes=None, sparse_output=False)[原始碼]#

在可迭代的項目與多標籤格式之間轉換。

雖然集合或元組的列表是多標籤資料非常直觀的格式,但處理起來很笨拙。此轉換器會在這種直觀的格式和受支援的多標籤格式之間轉換:一個 (樣本 x 類別) 的二元矩陣,指出類別標籤的存在。

參數:
classes類陣列 (array-like),形狀為 (n_classes,),預設值為 None

指示類別標籤的順序。所有條目都應該是唯一的(不能包含重複的類別)。

sparse_output布林值 (bool),預設值為 False

如果希望輸出二元陣列為 CSR 稀疏格式,則設定為 True。

屬性:
classes_ndarray,形狀為 (n_classes,)

當提供時,為 classes 參數的副本。否則,它對應於擬合時找到的類別的排序集合。

另請參閱

OneHotEncoder

使用 one-hot(又稱 one-of-K)方案編碼類別特徵。

範例

>>> from sklearn.preprocessing import MultiLabelBinarizer
>>> mlb = MultiLabelBinarizer()
>>> mlb.fit_transform([(1, 2), (3,)])
array([[1, 1, 0],
       [0, 0, 1]])
>>> mlb.classes_
array([1, 2, 3])
>>> mlb.fit_transform([{'sci-fi', 'thriller'}, {'comedy'}])
array([[0, 1, 1],
       [1, 0, 0]])
>>> list(mlb.classes_)
['comedy', 'sci-fi', 'thriller']

常見的錯誤是傳入一個列表,這會導致以下問題

>>> mlb = MultiLabelBinarizer()
>>> mlb.fit(['sci-fi', 'thriller', 'comedy'])
MultiLabelBinarizer()
>>> mlb.classes_
array(['-', 'c', 'd', 'e', 'f', 'h', 'i', 'l', 'm', 'o', 'r', 's', 't',
    'y'], dtype=object)

要更正此問題,應該將標籤列表以以下方式傳入:

>>> mlb = MultiLabelBinarizer()
>>> mlb.fit([['sci-fi', 'thriller', 'comedy']])
MultiLabelBinarizer()
>>> mlb.classes_
array(['comedy', 'sci-fi', 'thriller'], dtype=object)
fit(y)[原始碼]#

擬合標籤集合二元化器,儲存 classes_

參數:
y可迭代的迭代器

每個樣本的一組標籤(任何可排序和可雜湊的物件)。如果設定了 classes 參數,則不會迭代 y

回傳值:
self物件

已擬合的估算器。

fit_transform(y)[原始碼]#

擬合標籤集合二元化器並轉換給定的標籤集合。

參數:
y可迭代的迭代器

每個樣本的一組標籤(任何可排序和可雜湊的物件)。如果設定了 classes 參數,則不會迭代 y

回傳值:
y_indicator{ndarray, 稀疏矩陣},形狀為 (n_samples, n_classes)

一個矩陣,使得當 classes_[j]y[i] 中時,y_indicator[i, j] = 1,否則為 0。稀疏矩陣將為 CSR 格式。

get_metadata_routing()[原始碼]#

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

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

回傳值:
routingMetadataRequest

一個封裝路由資訊的 MetadataRequest

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

取得此估算器的參數。

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

如果為 True,將會回傳此估算器和包含的子物件(為估算器)的參數。

回傳值:
params字典 (dict)

參數名稱對應到它們的值。

inverse_transform(yt)[原始碼]#

將給定的指示矩陣轉換為標籤集合。

參數:
yt{ndarray, 稀疏矩陣},形狀為 (n_samples, n_classes)

一個只包含 1 和 0 的矩陣。

回傳值:
y元組列表

每個樣本的標籤集合,使得對於每個 yt[i, j] == 1y[i]classes_[j] 組成。

set_output(*, transform=None)[原始碼]#

設定輸出容器。

請參閱 介紹 set_output API,以了解如何使用該 API 的範例。

參數:
transform{"default", "pandas", "polars"},預設值為 None

配置 transformfit_transform 的輸出。

  • "default":轉換器的預設輸出格式

  • "pandas":DataFrame 輸出

  • "polars":Polars 輸出

  • None:轉換配置保持不變

在 1.4 版中新增: 加入了 "polars" 選項。

回傳值:
self估算器實例

估算器實例。

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

設定此估算器的參數。

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

參數:
**paramsdict

估算器參數。

回傳值:
self估算器實例

估算器實例。

transform(y)[原始碼]#

轉換給定的標籤集。

參數:
y可迭代的迭代器

每個樣本的一組標籤(任何可排序和可雜湊的物件)。如果設定了 classes 參數,則不會迭代 y

回傳值:
y_indicator陣列或 CSR 矩陣,形狀為 (n_samples, n_classes)

一個矩陣,使得 y_indicator[i, j] = 1 若且唯若 classes_[j]y[i] 中,否則為 0。