将numpy阵列转换为XGBoost中的DMATRIX



我想将我的数组火车集和标签转换为dmatrix进行培训。

dtrain = xgb.DMatrix(x_train, label=y_train)

在这里x_train.shape = (13619575, 45)

但是当我运行此代码时,jupyter笔记本内核崩溃了,而我的内存仍然有8GB。

我试图将其减少到70%的记录。但是它仍然崩溃了。有什么方法可以解决吗?

谢谢。

这链接到此问题:https://github.com/dmlc/xgboost/issues/163

numpy和xgb.dmatrix之间将有重复的内存副本,如果要保存内存,请尝试将数据转换为libsvm格式和XGB.DMATRIX支持从文本Format的直接加载涉及numpy。或简单地使用带有更多RAM的机器。

您可以使用dump_svmlight_file将转储到SVM文件格式

此处给出的示例:https://www.kaggle.com/c/telstra-recruiting-network/discussion/18223

import pandas as pd
import numpy as np
from sklearn.datasets import dump_svmlight_file
df = pd.DataFrame()
df['Id'] = np.arange(10)
df['F1'] = np.random.rand(10,)
df['F2'] = np.random.rand(10,)
df['Target'] = map(lambda x: -1 if x < 0.5 else 1, np.random.rand(10,))
X = df[np.setdiff1d(df.columns,['Id','Target'])]
y = df.Target
print df
dump_svmlight_file(X,y,'smvlight.dat',zero_based=True,multilabel=False)

尽管我现在有问题:对于4GB数据集而言,倾倒非常慢,但必须更快地存在。

相关内容

  • 没有找到相关文章

最新更新