问题
fit_resample(X,y)
完成 200 万行的执行花费的时间太长。
数据集规范
我有一个关于网络特征的标记数据集,其中X
(特征)和Y
(标签)分别具有形状(2M, 24)
和形状(2M,11)
。
即数据集中有超过 200 万行。有 24 个特征和 11 个不同的类/标签。
X 和 Y 都是dtype 的numpy
数组float
。
使用 SVM SMOTE 的动机
由于类不平衡,我意识到SVM SMOTE
平衡它是一种很好的技术,从而提供更好的分类。
使用较小的子数据集进行测试
为了测试我的分类器的性能,我从小处着手。我从 200 万行的大数据集中制作了小子数据集。
它采用了以下代码:-
%%time
sm = SVMSMOTE(random_state=42)
X_res, Y_res = sm.fit_resample(X, Y)
第一个数据集仅包含 7.5k 行。运行该单元大约需要 800 毫秒。第二个数据集包含 115k 行。执行单元需要 20 分钟。
解决方案尝试
我的系统在连续运行超过 48 小时后崩溃,内存不足。
我尝试了一些想法,例如
1. 使用 %%px 将其拆分为在多个 CPU 内核上运行
更快的执行没有改进
2.使用NVIDIA GPU的
和上面一样。这更容易理解,因为在_smote.py
构建库函数时没有考虑到 CUDA 的并行编程。
我对缺乏结果和温暖的 PC 感到非常沮丧。我该怎么办?