我正在使用 pandas 库导入数据集。我将数据集分为 X 和 y 变量。我通过管道预处理 X 并拥有 X_data 变量。后来我使用 XGBoost 和 RF 模型进行训练。
我使用 sys 和 pympler 库来查看所有变量在我的工作空间中占用了多少内存空间。
第一期: 问题是我得到的 sys.getsizeof() 和 asizeof.asizeof() 的值不同。我浏览了其他论坛并了解到 sys 不适用于某些变量(例如,设置)等。但即使对于普通的熊猫系列,我也得到了巨大的价值差异。我不确定为 'y' 的值选择哪一个。
第二个问题:我使用 asizeof.asizeof() 来查找 XGBoost 和 RF 模型的大小。对于 RF 模型,我得到的拟合模型约为 261KB,但对于 XGBoost,我得到的拟合模型约为 5.2KB。我不确定任一模型的这些值是否正确。也许我错过了什么?
下面是代码和输出。
对于第 1 期
从 pympler 导入 asizeof 导入系统
未显示预处理和模型训练的代码
类型(y) 输出:pandas.core.series.Series
asizeof.asizeof(y) 输出:6706024
sys.getsizeof(y) 输出:121104
类型(X_data) 输出:scipy.sparse._csr.csr_matrix
asizeof.asizeof(X_data) 输出:2301736
sys.getsizeof(X_data) 输出:56 # 我丢弃了这个值,因为这个字节大小是用于 python 对象作为我的研究
我通过使用pickle解决了这个问题。
import pickle
import sys
p = pickle.dumps(xgb)
print(sys.getsizeof(p))