解决sklearn Pipeline与LabelBinarizer不兼容报错

错误的示例

TypeError: fit_transform() takes 2 positional arguments but 3 were given

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import LabelBinarizer


cat = ['序', '日', '新', '说']

pipeline = Pipeline([
    ('label_binarizer', LabelBinarizer())
])

one_hot = pipeline.fit_transform(cat)
one_hot

"""
TypeError: fit_transform() takes 2 positional arguments but 3 were given
"""

错误的示例

解决

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import LabelBinarizer


# 打个小补丁
LabelBinarizer.__fit_transform = LabelBinarizer.fit_transform
LabelBinarizer.fit_transform = lambda self, X, y=None, **fit_params: LabelBinarizer.__fit_transform(self, X)

cat = ['序', '日', '新', '说']

pipeline = Pipeline([
    ('label_binarizer', LabelBinarizer())
])

one_hot = pipeline.fit_transform(cat)
one_hot

"""
array([[1, 0, 0, 0],
       [0, 0, 1, 0],
       [0, 1, 0, 0],
       [0, 0, 0, 1]])
"""

解决


版权声明:本文为weixin_44221705原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。