我是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)
您的结果对您的五个类是正面或负面的,因此,第二个级别的'a''c'和'a'在第二个类中。多标签分类的目的是将每个数据标记为五个类别的0-5。
如果您严格想要两个标签,则可以运行两个单个标签分类,这可能就足够了。