2

我曾尝试将 OneVsRest 与 Sklearn 的逻辑回归一起使用,但它为某些样本提供了空标签(即不预测任何结果),即使我没有任何未标记的训练数据。

知道可能是什么原因造成的或如何解决这个问题吗?

clf = OneVsRestClassifier(LogisticRegression(multi_class='ovr',max_iter=1000,solver='lbfgs'))
clf.fit(X,Y)
self.classifier=clf


self.classifier.predict(test_data)
4

1 回答 1

1

每当您执行 MultiLabel 分类时,根据OneVsRestClassifier目标需要是“标签序列序列”

此外,根据您对此标签的编码方式,您可能会收到以下警告:“DeprecationWarning:从版本 0.17 起将不提供对序列序列多标签表示的直接支持。使用 sklearn.preprocessing.MultiLabelBinarizer 转换为标签指示符表示。”

因此,编码标签的巧妙方法:

from sklearn import preprocessing
mlb = preprocessing.MultiLabelBinarizer()
Y = mlb.fit_transform([(1, 2), (1,2), (1,2),(4,)]) 
# this means sample one belongs to classes {1,2} and so on. 
# Take into account the format if only one class is needed, (4,) not (4) 

所以 Y 结果是:

array([[1, 1, 0],
       [1, 1, 0],
       [1, 1, 0],
       [0, 0, 1]])
于 2016-02-01T17:08:25.690 回答