首页 > 解决方案 > 如何在 XGBoost 中根据 python 中的某些标准拆分训练和测试?

问题描述

在运行 XGB 回归模型之前,我以 70:30 的比例将我的数据拆分为 trainData 和 testData。我需要重复运行这个模型。我需要怎么做才能每次都得到不同的 70:30 分班?我需要确保下次拆分时 30% 的 testData 包含在 trainData 中,然后再次运行它。

标签: pythonmachine-learningxgboost

解决方案


也许您会考虑为此使用交叉验证: http ://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_validate.html

例子:

import xgboost
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_iris
dataset = load_iris()
X = dataset['data']
Y = dataset['target']
model = xgboost.XGBClassifier()
kfold = KFold(n_splits=4, random_state=1)
results = cross_val_score(model, X, Y, cv=5)
print("Accuracy: %.2f%% (%.2f%%)" % (results.mean()*100, 
results.std()*100))

您可以在此处找到更多示例(https://machinelearningmastery.com/evaluate-gradient-boosting-models-xgboost-python/

或者如果您想要 70 到 30 的比例,请使用:http ://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html


推荐阅读