问题描述
从我的数据帧x_train开始,我想单列“体裁”。共有1000多种不同的流派,但是当我使用multilabelbinarizer函数时,它只报告31列,并且查看它们并没有什么意义,在帮助页面上查看它建议不要使用列表,而是使用数组,就像我在示例中所做的那样,但仍然没有提供36158 x 1388的矩阵。我想念的是什么?
upVotes
解决方法
奇怪的输出是由于fit_transform()
的参数必须是可迭代项(see doc)的可迭代项。
必须更改变量gen
的格式,以使流派分离。将包含流派的字符串划分为字符串列表,以分隔流派,例如:
'Drama Horror Thriller' => ['Drama','Horror','Thriller']
您可以一行完成:
gen = [x.split(' ') for x in list(x_train['genres'])]
gen
[['Drama'],['Drama','Thriller'],['Drama'],['Children','Drama'],['Comedy','Drama','Thriller']]
gen
现在具有fit_transform()
正确的格式:
from sklearn.preprocessing import MultiLabelBinarizer
multilabel_binarizer = MultiLabelBinarizer()
y = multilabel_binarizer.fit_transform(gen)
multilabel_binarizer.classes_
['Children' 'Comedy' 'Drama' 'Horror' 'Thriller']
y
array([[0,1,0],[0,1],[1,1]])