You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SMOTEENN在2000行小数据集上无限运行无结果求助

问题分析:SMOTEENN在小数据集上无限运行且CPU无负载的原因

问题背景

环境配置:sklearn '1.1.3'、imblearn '0.9.1'、Python '3.10.8'
数据集规模:仅2000行
执行代码:

smt = SMOTEENN(random_state=42, n_jobs = -1)
X_train_SMOTE, y_train_SMOTE = smt.fit_resample(X_train, y_train)

问题现象:单元格无限运行(等待1小时后终止),无结果无报错,运行期间CPU无负载,重装imblearn无效


可能的原因及排查方向

  • 多进程参数引发的死锁
    imblearn 0.9.1与sklearn 1.1.3的多进程调度存在兼容性问题。设置n_jobs=-1时,SMOTEENN内部的SMOTE采样和ENN清洗步骤可能在进程通信时陷入死锁,小数据集下进程启动的额外开销会放大这个问题,导致CPU无实际任务执行。建议先将n_jobs改为1,禁用多进程后重新测试。

  • 数据异常导致的逻辑循环
    检查数据集是否存在以下情况:

    • 特征包含NaN、无穷大值,SMOTEENN计算近邻时会陷入异常处理的无限循环;
    • 少数类样本量极低(如仅1-2个),ENN步骤在清洗合成样本时出现逻辑迭代死循环;
    • 特征维度极高且存在严重共线性,导致近邻计算的数值稳定性问题,引发进程挂起。
      可通过X_train.isna().sum()、np.isinf(X_train).sum()排查异常值,用y_train.value_counts()统计类别分布。
  • 版本兼容性bug
    imblearn 0.9.x系列对sklearn 1.1.x的适配存在未修复的问题。建议调整版本组合:要么降级sklearn到1.0.x版本,要么升级imblearn到0.10.x版本(如imblearn 0.10.1适配sklearn 1.2.x),确保两者版本匹配。

  • 运行环境的进程阻塞
    Jupyter Notebook等交互式环境下,多进程可能因内核与子进程的通信机制阻塞。尝试在普通Python脚本中运行代码,而非Notebook单元格;同时检查系统内存是否充足,高维度小数据集也可能因内存交换频繁导致进程假死。

内容的提问来源于stack exchange,提问作者joe.somewhere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:31:06