【问题标题】:Accuracy on training set is weirdly low compared to validation accuracy for many classifiers. Is this normal?与许多分类器的验证准确度相比,训练集的准确度非常低。这是正常的吗?
【发布时间】:2019-11-22 18:39:55
【问题描述】:

我认为在拟合数据并预测训练集之后,您应该获得接近 100% 的准确率。我的意思是这才有意义。该算法基于该数据集进行学习。但是当我这样做时:

classifier.fit(X_train, y_train)

pred = classifier.predict(X_test)

print(accuracy_score(y_test, pred))

>>> 0.810126582278481

这很好。但是,如果我这样做:

pred = classifier.predict(X_train)

print(accuracy_score(y_train, pred))

>>> 0.6677316293929713

这不是谬论吗?还是我做错了什么……?这适用于 RandomForestClassifier、MLPClassifier 和 SVC。

【问题讨论】:

    标签: python machine-learning scikit-learn training-data


    【解决方案1】:

    This 回答很好地解释了这种行为。您有一个正则化术语(或“惩罚”参数)C,默认值为 1;这可以防止过度拟合并解释低准确性。尝试通过执行以下操作来增加参数C 的值:

    classifier = svm.SVC(C=200000)
    classifier.fit(X_train, y_train)
    pred = classifier.predict(X_train)
    print(accuracy_score(y_train, pred))
    

    【讨论】:

    • @Snusifer 考虑接受这个作为正确答案,如果这有帮助:)
    猜你喜欢
    • 2020-10-16
    • 1970-01-01
    • 2021-07-22
    • 2018-08-16
    • 2020-10-24
    • 2023-04-03
    • 2020-07-08
    • 2017-10-14
    • 1970-01-01
    相关资源
    最近更新 更多