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