如何在使用交叉验证时使用测试数据集进行预测?
How to predict with the test dataset while using cross validation?
我想对预测模型使用交叉验证。我想保留 20% 的数据作为测试集,并使用其余数据通过交叉验证来拟合我的模型。
希望如下:
作为机器学习模型,我想使用随机森林和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_score
scores = cross_val_score(random_forest, X_train, y_train, cv=5, scoring = 'r2')
它给出了结果,但我想预测 X_test 数据的 y 值。你能帮我吗?之后,我也会为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)
model = random_forest.fit(x_train, y_train)
prediction = model.predict(x_test)
所以预测是列表,那么你可以使用这个预测来检查准确性
一般来说,交叉验证 (CV) 用于以下两个原因之一:
- 模型调整(即超参数搜索),以搜索最大化模型性能的超参数;在 scikit-learn 中,这通常是使用
GridSearchCV
模块 完成的
- 单个模型的性能评估,您对选择模型的超参数不感兴趣;这通常通过
cross_val_score
实现
根据您的设置,很明显您属于上述第二种情况:无论出于何种原因,您似乎已经得出结论,要使用的超参数是您在模型定义中显示的超参数,并且,在继续安装它之前,您需要了解它的性能如何。您已选择使用 cross_val_score
执行此操作,并且您显示的代码到目前为止确实没问题。
但您还没有完成:cross_val_score
只做了那个,即它 return 是一个分数,它 不是 return 一个合适的模型。因此,为了真正适合您的模型并获得对测试集的预测(当然假设您对 cross_val_score
编辑的 return 的实际分数感到满意),您需要继续这样做:
random_forest.fit(X_train, y_train)
pred = random_forest.predict(X_test)
LightGBM 的过程也应该类似。
我想对预测模型使用交叉验证。我想保留 20% 的数据作为测试集,并使用其余数据通过交叉验证来拟合我的模型。
希望如下:
作为机器学习模型,我想使用随机森林和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_score
scores = cross_val_score(random_forest, X_train, y_train, cv=5, scoring = 'r2')
它给出了结果,但我想预测 X_test 数据的 y 值。你能帮我吗?之后,我也会为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)
model = random_forest.fit(x_train, y_train)
prediction = model.predict(x_test)
所以预测是列表,那么你可以使用这个预测来检查准确性
一般来说,交叉验证 (CV) 用于以下两个原因之一:
- 模型调整(即超参数搜索),以搜索最大化模型性能的超参数;在 scikit-learn 中,这通常是使用
GridSearchCV
模块 完成的
- 单个模型的性能评估,您对选择模型的超参数不感兴趣;这通常通过
cross_val_score
实现
根据您的设置,很明显您属于上述第二种情况:无论出于何种原因,您似乎已经得出结论,要使用的超参数是您在模型定义中显示的超参数,并且,在继续安装它之前,您需要了解它的性能如何。您已选择使用 cross_val_score
执行此操作,并且您显示的代码到目前为止确实没问题。
但您还没有完成:cross_val_score
只做了那个,即它 return 是一个分数,它 不是 return 一个合适的模型。因此,为了真正适合您的模型并获得对测试集的预测(当然假设您对 cross_val_score
编辑的 return 的实际分数感到满意),您需要继续这样做:
random_forest.fit(X_train, y_train)
pred = random_forest.predict(X_test)
LightGBM 的过程也应该类似。