我有一个多标签数据,我使用不同的分类器和MEKA(WEKA的多标签版本)进行了训练, MEKA给我的评估结果(例如准确性)与我从scikit-learn的相同分类器获得的结果不同。
因为我的数据是多标签的,所以我正在使用二进制相关性方法(在 MEKA 和 scikit-multilearn 中都有)。例如,我使用的是 SVM,它是MEKA(和 WEKA)中的SMO和sklearn中的 linearSVC。
现在,我从MEKA 中的BR>SMO的10 倍交叉验证中获得的准确度约为50% ,而从BinaryRelevevce>LinearSVC获得的准确度约为20%。其他评估措施(例如 f1 分数、汉明损失等)也不匹配。
我试图给出在LinearSVC的输入中可以找到的所有参数,与SMO的值相同,但没有运气。我的 Python 代码是这样的:
from skmultilearn.problem_transform import BinaryRelevance
from sklearn.svm import LinearSVC
my_classifier = BinaryRelevance(
classifier=LinearSVC(C=1, random_state=1, tol=0.001, max_iter=10000, dual=False),
require_dense=[True, True])
我必须补充一点,在 MEKA 中使用BR>SMO来训练和评估模型将花费我的数据将近一个小时,但 sklearn 的linearSVC(使用 skmultilern 的BinaryRelevance)在相同的数据上花费的时间不到10 分钟(因此准确性较低)。
顺便说一句,我正在使用accuracy_score方法来sklearn.metrics确保准确性。
所以我的问题是我错过了什么?如何从MEKA和scikit-learn中的SVM获得相同的准确性?