python - 错误: Classification metrics can't handle a mix of multiclass-multioutput and multilabel-indicator targets

标签 python cross-validation multilabel-classification

我是机器学习的新手。

我正在尝试进行多标签文本分类。我具有这些文档的原始标签以及表示为一种热编码(19000文档x 200标签)的分类结果(使用的mlknn分类器)。现在,我正在尝试使用f1_score微型和宏评估分类,但是我在第3行收到ValueError: Classification metrics can't handle a mix of multiclass-multioutput and multilabel-indicator targets这个错误(不知道如何解决)。这是我的代码:

1. y_true = np.loadtxt("target_matrix.txt")
2. y_pred = np.loadtxt("classification_results.txt")

3. print (f1_score(y_true, y_pred, average='macro'))
4. print (f1_score(y_true, y_pred, average='micro'))

我还尝试使用cross_val_score进行分类,以立即获得评估,但遇到另一个错误(来自cross_val_score行):
File "_csparsetools.pyx", line 20, in scipy.sparse._csparsetools.lil_get1
File "_csparsetools.pyx", line 48, in scipy.sparse._csparsetools.lil_get1
IndexError: column index (11) out of bounds

这是我的代码:
X = np.loadtxt("docvecs.txt", delimiter=",")
y = np.loadtxt("target_matrix.txt", dtype='int')

cv_scores = []
mlknn = MLkNN(k=10)  
scores = cross_val_score(mlknn, X, y, cv=5, scoring='f1_micro')
cv_scores.append(scores)

非常感谢您对任何一种错误的帮助。

最佳答案

我是手动创建y数组,这似乎是我的错误。我现在使用MultiLabelBinarizer来创建它,如以下示例所示,现在它可以工作了:

train_foo = [['sci-fi', 'thriller'],['comedy'],['sci-fi', 'thriller'],['comedy']]
mlb = MultiLabelBinarizer()
mlb_label_train = mlb.fit_transform(train_foo)

X = np.loadtxt("docvecs.txt", delimiter=",")
cv_scores = []
mlknn = MLkNN(k=3) 
scores = cross_val_score(mlknn, X, mlb_label_train, cv=5, scoring='f1_macro')
cv_scores.append(scores)

您可以找到MultiLabelBinarizer here的文档。

关于python - 错误: Classification metrics can't handle a mix of multiclass-multioutput and multilabel-indicator targets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51011865/

相关文章:

python - 用较低的拉丁字母生成大随机字符串的最快方法

python - 如何导入上一级模块并使用最新的定义?

python - 在 Python 中读取 tiff 图像元数据

machine-learning - 具有未定义值的交叉验证性能聚合

python - Scikit Learn 中的交叉验证

python - 带反馈的多标签文本分类

python - 在 Python 中实现 JSON 的好方法(最快、最少损坏等)是什么?

python - 解读 sklearns 的 GridSearchCV 最好成绩

python-2.7 - 使用sklearn进行多标签特征选择

python - 我想实现用于文本分类的机器学习或深度学习模型(100 个类别)