【发布时间】:2018-12-22 10:47:16
【问题描述】:
我有一个数据框,其中一列是short_names。 short_names 由 2-5 个姓名字母组成 => BG,OP,LE,WEL,LC。每行可以有任意数量的名称。
我正在尝试使用 MultiLabelBinarizer 将名称转换为单独的列,这样如果行具有相似的名称,那么列中将有 1
one_hot = MultiLabelBinarizer()
one_hot.fit_transform(df['short_name'])
one_hot.classes__
因为某行中有一个“-”导致错误TypeError: 'float' object is not iterable,所以我使用了
df['short_names']= df['short_names'].astype(str)
现在的问题是类输出是字母而不是短名称,即 A、B、C 而不是 BG OP
【问题讨论】:
-
print (df['short_name'].head().to_dict())是什么? -
{0: nan, 1: 'CE', 2: 'NPP', 4: 'SE, CB, CBN, OOM, BCI', 5: 'RCS'}
-
预期输出是什么?删除值有问题的行?
-
array([[0, 0, 0, 0, 0,0,0,0], [0, 1, 0, 0, 0,0,0,0], [0, 0, 1, 1, 1,1,1,0], [0, 0, 0, 0, 0,0,01],如果其他行有公共标签,则应该指向同一列中的1 [ 1, 0, 0, 0, 1]])
标签: python multilabel-classification