Machine learning 基于Sklearn的多标签分类
我曾尝试使用Sklearn的OneVsRest和逻辑回归,但它为一些样本提供了空标签(即,不预测任何结果),即使我没有任何未标记的训练数据 知道是什么原因造成的吗?或者如何修复Machine learning 基于Sklearn的多标签分类,machine-learning,scikit-learn,classification,logistic-regression,multilabel-classification,Machine Learning,Scikit Learn,Classification,Logistic Regression,Multilabel Classification,我曾尝试使用Sklearn的OneVsRest和逻辑回归,但它为一些样本提供了空标签(即,不预测任何结果),即使我没有任何未标记的训练数据 知道是什么原因造成的吗?或者如何修复 clf = OneVsRestClassifier(LogisticRegression(multi_class='ovr',max_iter=1000,solver='lbfgs')) clf.fit(X,Y) self.classifier=clf self.classifier.predict(test_dat
clf = OneVsRestClassifier(LogisticRegression(multi_class='ovr',max_iter=1000,solver='lbfgs'))
clf.fit(X,Y)
self.classifier=clf
self.classifier.predict(test_data)
每当执行多标签分类时,根据
OneVsRestClassifier
,目标必须是“标签序列”
此外,根据您对此标签的编码方式,您可能会收到以下警告:“弃用警告:从版本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]])
这正是我所做的训练数据的格式是(4,)为单一标签。然而,这对一些测试数据被标记为“无”并没有帮助。好的,你们能不能给我们举一个例子,说明其中一个样本的预测结果是
None
?可能算法本身或其实现允许sklearn中的不确定性,并返回None
。试着给我们举个例子,同时我会检查一些理论。你也可以检查predict\u proba(X)
方法,而不是predict
,看看它是否返回None
,我不知道如何在这里给出一个例子,因为有预测标签的与没有预测标签的相似。然而,我尝试了你的想法来检查预测概率(X),对于所有那些没有标签的预测。它们具有所有标签的概率,因此分类器为样本的每个标签提供概率,但最终不会预测任何内容。数据集是以特征为弓的文本文档集合,并且有多个类标记这些类。