【问题标题】:Why is the accuracy reported in pycaret higher than via sklearn for the same model and data?为什么相同模型和数据在 pycaret 中报告的准确率高于通过 sklearn 报告的准确率?
【发布时间】:2022-01-11 14:55:28
【问题描述】:

我尝试将 pycaret 用于机器学习项目,并获得了非常高的准确度。当我尝试使用我的 sklearn 代码验证这些时,我发现我无法获得相同的数字。这是我在 pycaret 的公共扑克数据集上重现此问题的示例:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

from pycaret.classification import *
from pycaret.datasets import get_data

data = get_data('poker') 

grid = setup(data=data, target='CLASS', fold_shuffle=True, session_id=2)
dt = create_model('dt')

这给出了使用 10 倍交叉验证的准确度约为 57%。当我尝试使用 sklearn 在具有相同模型的相同数据集上重现这个数字时,我只得到 49%。有谁知道这种差异从何而来??

from sklearn.model_selection import cross_val_predict
from sklearn.metrics import accuracy_score

X = data.drop('CLASS', axis = 1)
y = data['CLASS']


y_pred_cv = cross_val_predict(dt, X, y, cv=10)
accuracy_score(y, y_pred_cv)

0.4911698233964679

【问题讨论】:

    标签: python scikit-learn pycaret


    【解决方案1】:

    我认为差异可能是由于您的 CV 折叠是如何随机化的。您是否在 sklearn 中设置了相同的种子(2)? Kfolds中使用的shuffle参数设置一样吗?

    【讨论】:

    • 感谢您的回答!我尝试将 fold_shuffle 设置为 False (必须先降级 sklearn ......)但这并没有显着改变结果。此外,每个折叠的分数非常稳定这一事实表明,生成折叠的具体方式并不重要。
    猜你喜欢
    • 1970-01-01
    • 2017-03-21
    • 2023-03-04
    • 2023-02-16
    • 2020-01-10
    • 2014-02-28
    • 2020-03-11
    • 2020-05-14
    相关资源
    最近更新 更多