我有几个功能列表:
feat_lists = [
['f1','f2','f3'],
['f2','f3'],
['f2','f4']
]
我想把它们排列成每行代表一个列表(观察(,每列代表一个特征。因此,值为1/0或True/False,具体取决于该列表中值的存在(观察(。
例如,对于上面的例子,我希望有以下数据帧(如表所示(
f1 | f2 | f3f4|||
---|---|---|---|---|
1 | 真 | 真假 | ||
2 | 错误 | 正确错误|||
3 | 错误 | 真 | 错误真 |
通过DataFrame.astype
:将MultiLabelBinarizer
强制转换为布尔值
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
df = pd.DataFrame(mlb.fit_transform(feat_lists),columns=mlb.classes_).astype(bool)
print (df)
f1 f2 f3 f4
0 True True True False
1 False True True False
2 False True False True