如何解决带 vaex 的 Xgboost
我想澄清一下:vaex.ml.sklearn
是否允许执行核外机器学习?
我尝试使用文档中的示例,并看到如果我在 xgboosting procees 中使用来自 hdf5 文件的数据集(评估的数据集消耗 ~3 Gb 的 RAM),RAM 使用量约为 ~7-8 Gb。天真地,我假设核外不会消耗这么多内存。我做错了什么?
我的代码是
import vaex.ml.sklearn
xgb_model = xgboost.sklearn.XGBRegressor(max_depth=4,learning_rate=0.1,n_estimators=100,subsample=0.75,random_state=42,)
vaex_xgb_model = vaex.ml.sklearn.Predictor(features=features,target='target',model=xgb_model,prediction_name='prediction_xgb')
vaex_xgb_model.fit(df_train)
df_train = vaex_xgb_model.transform(df_train)
其中 features
是大约 40 个项目的列表。
解决方法
您使用的外部模型不是由 vaex(或 vaex-ml)提供的。在 vaex-ml 中使用它们时,您只需简单地将它们添加到 vaex 计算图中、序列化、延迟评估等中即可。模型本身未修改(我相信这在文档字符串中已说明)。所以它们并没有超出核心。
我认为 vaex-ml 有一个在 vaex 中实现的 K-means 模型,这样一个模型就会超出核心(即不会使用太多内存)。
vaex-ml 中可用的 StandardScaler、FrequencyEncoder 等预处理转换是使用 vaex 实现的,因此它们也将是核外的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。