1

我尝试将 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

4

1 回答 1

1

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

于 2022-01-19T11:37:54.110 回答