LabelBinarizer() 需要永远

Posted

技术标签:

【中文标题】LabelBinarizer() 需要永远【英文标题】:LabelBinarizer() Takes forever 【发布时间】:2013-12-08 03:29:50 【问题描述】:

尝试为庞大的数据集进行多标签分类。我有大约 4000 个独特的标签,所以当我尝试使用 LabelBinarizer().fit(yTuple)/transform 时,它只需要很长时间。根据标签的数量和行数(600 万行)是正常的还是我做错了什么?

笔记本电脑配置:Mac,i5 四核,16 GB RAM,剩余足够的硬盘空间(大约 250 GB 可用空间)

代码很简单,但还是贴在这里:

yTuple = [tuple(item.split(' ')) for item in getY(filepath)]
lb = LabelBinarizer().fit(yTuple)
Y_indicator = lb.transform(yTuple)

getY(filepath) - 这将一次返回一行的标签集。

【问题讨论】:

【参考方案1】:

标签数组将占用大约 4000 * 6e6 * 8 字节,即 179GB。 scikit-learn 不能开箱即用地进行如此大规模的多类分类。

【讨论】:

感谢您的确认。【参考方案2】:

如果您有足够的内存,您可能想尝试使用 pandas get_dummies 来代替。

【讨论】:

以上是关于LabelBinarizer() 需要永远的主要内容,如果未能解决你的问题,请参考以下文章

sklearn.preprocessing.LabelBinarizer

LabelEncoder 和 LabelBinarizer 的区别? [复制]

如何使用 LabelBinarizer 对正确的训练和测试进行一次热编码

如何在 Scikit-Learn 中重用 LabelBinarizer 进行输入预测

有没有办法在sklearn中的LabelBinarizer Transform之后跟踪哪个DataFrame Column对应于哪个Array Column?

sklearn基础知识-准备阶段