在实例化 MultiLabelBinarizer
之后,我需要它的 inverse_transform
方法来处理我在别处构建的矩阵。
不幸的是,
import numpy as np
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer(classes=['a', 'b', 'c'])
A = np.array([[1, 0, 0], [1, 0, 1], [0, 1, 0], [1, 1, 1]])
y = mlb.inverse_transform(A)
产生 AttributeError: 'MultiLabelBinarizer' 对象没有属性 'classes_'
我注意到,如果我在 mlb
实例化之后添加这一行,
mlb.fit_transform([(c,) for c in ['a', 'b', 'c']])
错误消失。我猜这是因为 fit_transform
设置了 classes_
属性的值,但我希望它在实例化时完成,因为我提供了一个 类
参数。
我使用的是 sklearn 版本 0.17.1 和 python 2.7.6。 我做错了什么吗?
最佳答案
如果你想在 MultiLabelBinarizer
的实例中设置属性 classes_
,你也可以像这样快速破解:
mlb = MultiLabelBinarizer().fit(['a', 'b', 'c'])
因为像狨猴说的,只有 fit
和 fit_transorm
似乎符合 classes_
属性。此外,scikit-learn.org 的文档 http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MultiLabelBinarizer.html明确指定方法 fit
可以返回 MultiLabelBinarizer
的实例。
def fit(self, y):
"""Fit the label sets binarizer, storing `classes_`
Parameters
----------
y : iterable of iterables
A set of labels (any orderable and hashable object) for each
sample. If the `classes` parameter is set, `y` will not be
iterated.
Returns
-------
self : returns this MultiLabelBinarizer instance
"""
关于python - sklearn - 无法立即调用 MultiLabelBinarizer 的 inverse_transform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37722197/