我的y_train由多种成分组成。每种成分都包含用逗号分隔的不同成分。基本上,这是一个多类分类问题。我的y_train看起来像这样

df['ingredients_str'].head()

0    romaine lettuce,black olives,grape tomatoes
1    plain flour,ground pepper,salt,tomatoes
2    eggs,pepper,salt,mayonaise,cooking oil
3    water,vegetable oil,wheat,salt
4    black pepper,shallots,cornflour,cayenne
Name: ingredients_str, dtype: object


我尝试使用sklearn标签编码器对分类变量进行编码。

from sklearn import preprocessing
le = preprocessing.LabelEncoder()
le.fit_transform(df['ingredients_str'])

0    28560
1    26783
2    10595
3    38379
4     2798
Name: encoding, dtype: int64


如何在labelencoder中转换该列?

最佳答案

您要在每个单元格中检索标签编码的标签列表的IIUC。为此,您可以展开标签列,处理每个列,然后将输出数据帧重新压缩为一列。

labels = pd.DataFrame(df.str.split(',').values.tolist()).fillna('')
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
le.fit([item for sublist in labels.values for item in sublist])
labels = pd.DataFrame(np.transpose([le.transform(labels[col]) for col in labels.columns]))
labels.apply(lambda x: [list(x)])

0    [[12, 11, 6, 17, 2]]
1    [[1, 8, 10, 16, 14]]
2    [[7, 13, 13, 18, 5]]
3     [[0, 15, 9, 13, 3]]
4       [[0, 0, 4, 0, 0]]
dtype: object

关于python - 标签在一行中编码多个分类值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51877808/

10-14 18:24
查看更多