簡體   English   中英

如何使用多個 class 標簽對數據進行編碼?

[英]How to encode data with multiple class labels?

我有多個類的分類問題,比如 A、B、C 和 D。我的數據具有以下 y 標簽:

y0 = [['A'], ['B'], ['A','D'], ['A'], ['A','C','D'], ['D'], ..., ['C'], ['A','B','C','D'] , ['B']]

我想在這些標簽上訓練一個隨機森林分類器。 首先,我需要對標簽進行編碼。 我首先嘗試LabelEncoder

from sklearn.preprocessing import OneHotEncoder, LabelEncoder
le = LabelEncoder()
le.fit_transform(y0)
# encoded labels: array([0, 1, 2, 0, 3, 4, ... 5, 6, 1], dtype=int64)

我也試過OneHotEncoder ,但很明顯, LabelEncoderOneHotEncoder都不能在這里工作。 問題是我無法使用多個 class 標簽(例如['A','B','C'] )對數據進行編碼。 我想這些簡單的編碼方法不是 go 的方法,那么編碼我的 class 標簽的最佳方法是什么? 為了澄清,我不想將例如['A','B']視為與['A']['B']完全不同的 class 。 我希望它是一個不同的 class 但同時仍然繼承 A 和 B 類的特性。

這種問題稱為標簽(與多類相反,其中每個樣本只有一個 class 標簽),sklearn 期望多標簽問題將目標編碼為形狀為(n_samples, n_labels)的二進制數組。 您可以使用MultiLabelBinarizer以該格式對數據進行編碼。

而不是使用OneHotEncoderLabelEncoder您可以使用OrdinalEncoder將分類特征編碼為 integer 數組。

結果類將按順序排列,例如按字母順序AABAD等。

問題可能是AB是否更類似於ACAD 我的意思是字母順序可能無法反映真正的相似性,例如序數比例'cold','warm','hot' ,因此應該使用手動編碼和重新排序。 但是這些細節需要一些領域知識。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM