XGBoost:在列车和tes中拆分数据

2024-04-30 05:23:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用XGBoost的python接口来构建模型。我有一个正在使用xgb.DMatrix(data_path)读取的数据集。我需要将这些数据分为训练和测试(以及验证,如果需要的话)。但我看到的大多数实现都是

dtrain = xgb.DMatrix('')
dtest = xgb.DMatrix('')

我找不到一种方法来读取数据集,然后将它们分成训练集、测试集(和验证集)。在

此外,是否可以在分成列车和试验时进行分层抽样?在

我需要知道这一点,因为我有稍微大一点的数据集,目前我正在使用spark读取它,将它们拆分,存储在磁盘上,然后从那里读取。有没有一种方法可以让我不必经过Pyspark和从hdfs读取数据?在


Tags: 数据path方法模型data读取数据磁盘spark
2条回答

我将使用sklearn的train_test_split,它也有一个分层参数,然后将结果放入dtrain和{}。在

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)

import xgboost as xgb
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)

请参阅此处的实现:A Simple XGBoost Tutorial Using the Iris Dataset。在

您总是可以使用pandas(请参见pandas.HDStore)从HDF5文件中读取数据,然后使用sklearn(简单随机或分层列车/列车拆分,请参见train_test_splitstratify参数)进行拆分。然后您可以直接将pandas数据帧对象馈送到sklearn API of xgboost中,或者将这些对象转换为xgboost.DMatrix,并在本机培训API中使用这些对象

相关问题 更多 >