yan*_*hen 5 pandas scikit-learn xgboost
我想将我的数组训练集和标签转换为 DMatrix 进行训练。
dtrain = xgb.DMatrix(x_train, label=y_train)
Run Code Online (Sandbox Code Playgroud)
这里x_train.shape = (13619575, 45)。
但是当我运行这段代码时,jupyter笔记本内核崩溃了,而我的内存仍然有8GB。
我试图将其减少到 70% 的记录。但它还是崩溃了。有什么办法可以解决吗?
谢谢。
小智 0
这与此问题相关: https ://github.com/dmlc/xgboost/issues/163
numpy 和 xgb.DMatrix 之间会存在重复的内存复制,如果想节省内存,请尝试将数据转换为 LibSVM 格式,并且 xgb.DMatrix 支持从 textformat 直接加载,无需涉及 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)
Run Code Online (Sandbox Code Playgroud)
虽然我现在有一个问题:对于 4Gb 数据集来说转储非常慢,但必须存在更快的方法。
| 归档时间: |
|
| 查看次数: |
5476 次 |
| 最近记录: |