如何在使用交叉验证时用测试数据集进行预测?

我想使用交叉验证来构建预测模型。我希望将20%的数据保留为测试集,并使用剩余的数据通过交叉验证来拟合我的模型。

我的需求如下所示:

enter image description here

作为机器学习模型,我希望使用随机森林和LightGBM。

from sklearn.ensemble import RandomForestRegressor random_forest = RandomForestRegressor (n_estimators=1400, max_depth=80, max_features='sqrt',                                   min_samples_leaf=1, min_samples_split=5,                                    random_state=1, verbose=1, n_jobs=-1)from sklearn.model_selection import cross_val_scorescores = cross_val_score(random_forest, X_train, y_train, cv=5, scoring = 'r2')

这会给出结果,但我希望能预测X_test数据的y值。您能帮助我实现吗?之后,我还将为LightGBM创建一个模型。


回答:

一般来说,交叉验证(CV)用于以下两个原因之一:

  • 模型调优(即超参数搜索),以便搜索最大化模型性能的超参数;在scikit-learn中,这通常通过使用GridSearchCV模块来实现
  • 对单一模型的性能评估,当你不关心选择模型的超参数时;这通常通过cross_val_score来实现

从你的设置来看,很明显你属于第二种情况:出于某种原因,你似乎已经确定了要使用的超参数,这些超参数是你模型定义中显示的,并且在继续拟合之前,你想了解它的表现如何。你选择使用cross_val_score来实现这一点,你展示的代码在这一点上确实是正确的。

但你还没有完成:cross_val_score只做这件事,即它返回一个分数,它返回一个拟合的模型。因此,为了实际拟合你的模型并在测试集上获取预测(当然假设你对cross_val_score返回的实际分数感到满意),你需要继续执行以下操作:

random_forest.fit(X_train, y_train)pred = random_forest.predict(X_test) 

对于LightGBM,程序也应该类似。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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