python - 如何在 XGBoost 中根据 python 中的某些标准拆分训练和测试?
问题描述
在运行 XGB 回归模型之前,我以 70:30 的比例将我的数据拆分为 trainData 和 testData。我需要重复运行这个模型。我需要怎么做才能每次都得到不同的 70:30 分班?我需要确保下次拆分时 30% 的 testData 包含在 trainData 中,然后再次运行它。
解决方案
也许您会考虑为此使用交叉验证: 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
推荐阅读
- java - 使用 java 的 Mongodb 中的实体少持久性支持
- windows - 在通过网络服务帐户运行的服务中使用特定于用户的应用程序数据
- php - 错误未加括号的`a?乙:丙?d : e` 不受支持。使用 `(a ? b : c) ? d:e`或`a?b : (c ? d : e)`
- terraform - terraform 应用后,舵列表未显示
- python - 如何为 Django 表单字段设置永久值
- mysql - 如何在 MySQL 中使用不同日期更新每一行中的日期
- tensorflow - 癌症语义分割中的图像和掩模归一化
- haskell - 我的 quickCheck 类型声明有什么问题?
- fish - 为什么 `echo HTTPS_PROXY=$HTTPS_PROXY` 在未设置变量时打印空行?
- laravel - 在作业发布之前添加新的有效负载