sklearn的cross_val_score函数需要澄清

我正在使用cross_val_score函数和LeaveOneOut函数,因为我的数据有60个样本。

我对cross_val_score在“留一法”交叉验证(LOOCV)中如何计算每个估计结果感到困惑。

在LOOCV中,对于一个实例,它会使用59个样本进行训练,让我们假设使用决策树分类器(DTC)模型,并预测剩下的一个样本。

那么主要的问题是:它在每个实例中是否都拟合了一个新的模型(即60次不同的拟合)在cross_val_score内部?

如果是这样,事情就变得令人困惑了。

然后我可以得到一个平均准确率(60个中的平均值)来评估性能。但我需要找到一个普遍适用的最佳DTC模型,而不仅仅是基于我自己的数据,尽管它是基于我的数据的。

如果我使用全部数据,它会完美拟合,但那个模型显然是过拟合了。

我希望得到一个基于我的数据普遍适用的最佳DTC模型。

如果有帮助,这里是我的代码:

    model = DecisionTreeClassifier(random_state=27, criterion='gini', max_depth=4, max_features='auto' )    loocv = LeaveOneOut()    results = cross_val_score(model, X, y, cv=loocv)

回答:

我不完全明白你想了解什么。

它在每个实例中是否都拟合了一个新的模型(即60次不同的拟合)在cross_val_score内部?

是的,在你的情况下它确实是这样做的。在这种情况下,你有何进一步的问题来帮助澄清你的困惑?

交叉验证的理念是获取你所选择的模型构建过程的性能估计。最终的模型可以(也应该为了最大限度地利用数据)在完整的数据集上构建。然后你可以用它来预测测试数据,并且可以使用你的cross_val_score结果来估计这个模型的性能。请查看我在之前的回答中提供的更详细的回答以及非常有用的链接。

我的回答适用于较大的数据集。可能有与小数据集处理相关的细微差别是我不知道的,但我看不出为什么这种逻辑不适用于这种情况。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注