2018年4月26日 星期四

sklearn.preprocessing.MultiLabelBinarizer 使用

sklearn.preprocessing.MultiLabelBinarizer





將元素進行二元變換

輸入的資料會轉換成一個 一維 classes_

每組資料會轉換成和 classes_ 相同大小的一維陣列
如果資料有對應到 classes_  就為 1 否則為 0

[[1,3],[2,6]]
classes_  [1 2 3 6]
=> [[1 0 1 0] , [0 1 0 1]]

使用 inverse_transform 變換回去

可以使用 classes 改變 classes_ 默認的排序

code

import pandas as pd
import numpy as np

from sklearn.preprocessing import MultiLabelBinarizer


#將全部的元素 進行二元變換
# 每個陣列都會對應到 data 產生的 classes_
# 每個陣列中的元素如果有對應到 classes_ 即為1 無對應為0
# 也支援字串陣列使用
data = [[1,3],[2,6]]


mlb = MultiLabelBinarizer()

mlb.fit(data)

print("MultiLabelBinarizer classes_ :\n" , mlb.classes_)

transform_data = mlb.transform(data);

print(transform_data)
print(mlb.inverse_transform(transform_data))
# 多增加參數 classes 可以自行排列元素順序
mlb = MultiLabelBinarizer(classes = [6,3,1,2])

mlb.fit(data)

print("MultiLabelBinarizer classes_ :\n" , mlb.classes_)

print(mlb.transform(data))

output

MultiLabelBinarizer classes_ :
 [1 2 3 6]
[[1 0 1 0]
 [0 1 0 1]]
[(1, 3), (2, 6)]
MultiLabelBinarizer classes_ :
 [6 3 1 2]
[[0 1 1 0]
 [1 0 0 1]]

source code

沒有留言:

張貼留言