首先,來解釋下啥是共享類別特徵。

假設一個電影數據集有多個topic。比如第一部電影主題是喜劇、愛情、幻想。第二部電影的主題是愛情、音樂。「愛情」就是數據1,2共享的主題特徵。topic1、2、3就是共享類別特徵。

那麼如何把三個特徵共享的類別值統一編碼呢?這裡可以用到sklearn的MultiLabelBinarizer。

先來看一個官方例子

>>> mlb.fit_transform([set([sci-fi, thriller]), set([comedy])])
array([[0, 1, 1],
[1, 0, 0]])
>>> list(mlb.classes_)
[comedy, sci-fi, thriller]

如果數據裡面有空值,MultiLabelBinarizer會報錯。

TypeError: < not supported between instances of float and str

我們可以先為nan填充一個特殊值,比如unknown。調用後,再刪掉unknown所在的列即可。

推薦閱讀:

查看原文 >>
相关文章