我正在尝试使用sklearn的cross_val_score函数(http://scikit-learn.org/stable/modules/cross_validation.html)进行多标签分类 .
scores = cross_validation.cross_val_score(clf, X_train, y_train,
cv = 10, scoring = make_scorer(f1_score, average = None))
我想要返回每个标签的F1分数 . 这种方式适用于第一次折叠,但在之后发出错误:
ValueError: scoring must return a number, got [ 0.55555556 0.81038961 0.82474227 0.67153285 0.76494024 0.89087657 0.93502377 0.11764706 0.81611208] (<type 'numpy.ndarray'>)
我假设引发此错误是因为cross_val_score需要返回一个数字 . 有没有其他方法我可以使用cross_val_score来获得每个标签的F1分数?
2 回答
我一般用
这通常为我提供了评估模型性能所需的所有值 .
我通过在... / scikit-learn / sklearn / cross_validation.py中进行一些更改来解决问题 . 更具体地说,我评论了这些方面:
这消除了检查类型是否为数字,从而允许传递numpy数组 .