【问题标题】:How to treat response OneVsRestClassifier in Scikit-learn for multilabel如何在 Scikit-learn 中为多标签处理响应 OneVsRestClassifier
【发布时间】:2016-10-16 15:09:48
【问题描述】:

我是 Scikit-learn 和分类方面的新手。我的任务是一个多标签分类问题。据我了解predict 返回带有n 元组的数组,这与样本中的特征数量相同。这是什么意思?如何获得严格的顺序和严格的预测值数量? 因为x_test = X_train[0] 输出Result [('a', 'c'), (), ()]x_test = X_train[0] 输出Result [('a',), (), ()]

import numpy as np
from sklearn.svm import SVC
from sklearn.multiclass import OneVsRestClassifier
from sklearn.preprocessing import MultiLabelBinarizer

input_data = [
  [0, 2, 0, 'a', 'c'],
  [0, 2, 0, 'a', 'c'],
  [0, 2, 0, 'a', 'c'],
  [0, 1, 0, 'a', 'c'],
  [1, 2, 1, 'b', 'e'],
  [1, 2, 0, 'b', 'd'],
  [1, 2, 0, 'a', 'e'],
  [1, 2, 0, 'a', 'd'],
  [1, 1, 0, 'a', 'c']
]
X = [x[0:3] for x in input_data]
y = [x[-2:] for x in input_data]


X_train = np.array(X)
y_train = np.array(y)
mlb = MultiLabelBinarizer()
y_train = mlb.fit_transform(y_train)

classifier = OneVsRestClassifier(SVC())

classifier.fit(X_train, y_train)

x_test = X_train[0]
result = classifier.predict(x_test)
labels = mlb.inverse_transform(result)
print("Result %s" % labels)

【问题讨论】:

    标签: python scikit-learn classification multilabel-classification


    【解决方案1】:

    您的结果为您的五个类是积极的或负面的,所以,用于测试的[0]和“第二个”和“A”的“C”。 Multilabel分类的目的是将每个数据标记为五个类的0-5。

    如果您想要严格的两个标签,您可以运行两个单个标签分类,可能就足够了。

    【讨论】:

      猜你喜欢
      • 2016-07-12
      • 2013-04-10
      • 2012-10-15
      • 2018-11-13
      • 2016-10-17
      • 2020-03-26
      • 2018-07-07
      • 2017-03-14
      • 2016-01-24
      相关资源
      最近更新 更多