python - sklearn - 无法立即调用 MultiLabelBinarizer 的 inverse_transform

标签 python python-2.7 scikit-learn

在实例化 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'])

因为像狨猴说的,只有 fitfit_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/

相关文章:

python - 调用打印功能,避免换行

python - 在 OSX 10.8.2 上使用 Python 2.7 获取适用于 Google App Engine 的 AppTrace

machine-learning - 如何使用多类分类通过 scikit-learn 访问每个类的支持量?

python - 为什么 django 模板不直接使用 python 代码?

python - 将列表递归减 1

python - 在Python中执行多线程程序以单线程运行

python - Celery worker 未在网络更改/IP 更改时重新连接

python - 用于图像数据集的 scikit-learn PCA

python - 需要解压的值太多(预计为 2 个)?

python - 如何使用 Selenium 使 chrome webdriver 中的所有声音静音