gpt4 book ai didi

python - 如何通过交叉验证检测过度拟合 : What should be the difference threshold?

转载 作者:行者123 更新时间:2023-11-30 09:40:25 25 4
gpt4 key购买 nike

建立分类模型后,我通过准确率、精确率和召回率对其进行评估。为了检查过度拟合,我使用了 K Fold Cross Validation。我知道,如果我的模型分数与交叉验证分数相差很大,那么我的模型就过度拟合了。然而,我一直不知道如何定义阈值。就像分数差异有多大实际上可以推断出模型过度拟合。例如,以下是 3 个分割(3 Fold CV、shuffle= True、random_state= 42)及其各自在 Logistic 回归模型上的得分:

Split Number  1
Accuracy= 0.9454545454545454
Precision= 0.94375
Recall= 1.0

Split Number 2
Accuracy= 0.9757575757575757
Precision= 0.9753086419753086
Recall= 1.0

Split Number 3
Accuracy= 0.9695121951219512
Precision= 0.9691358024691358
Recall= 1.0

无需 CV 直接训练 Logistic 回归模型:

Accuracy= 0.9530201342281879
Precision= 0.952054794520548
Recall= 1.0

那么我如何决定我的分数需要变化多大才能推断出过度拟合的情况?

最佳答案

我假设您正在使用 Cross-validation :

enter image description here

这将分割您的训练和测试数据。

现在你可能已经实现了类似的东西:

from sklearn.model_selection import cross_validate
from sklearn.metrics import recall_score
scoring = ['precision_macro', 'recall_macro']
clf = svm.SVC(kernel='linear', C=1, random_state=0)
scores = cross_validate(clf, iris.data, iris.target, scoring=scoring,cv=5)

所以现在您只计算测试分数,在所有 3 种情况下,该分数都非常好。

第一个选项是:

return_train_score is set to False by default to save computation time. To evaluate the scores on the training set as well you need to be set to True

在那里您还可以看到弃牌的训练分数。如果您看到训练集的准确度为 1.0,则说明过度拟合。

另一个选项是:多跑几次 fork 。然后你就可以确定算法没有过度拟合,如果每个测试分数都具有很高的准确性,那么你就做得很好。

您添加了基线吗?我假设它是二元分类,而且我感觉数据集高度不平衡,因此 0.96 的准确度一般来说可能不太好,因为您的虚拟分类(始终为一类)的准确度为 0.95。

关于python - 如何通过交叉验证检测过度拟合 : What should be the difference threshold?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59063349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com