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

Fuzzy-C-Means(FCM)算法出现ValidationError问题排查求助

问题:在Jupyter/Colab运行FCM时遇ValidationError,分层抽样代码是否存在问题?

我已经尝试在Jupyter Notebook和Colab环境中运行Fuzzy-C-Means(FCM)算法,但始终遇到ValidationError错误;不过该算法在另一台笔记本电脑上可正常运行。以下是我用于分割数据集的代码:

# 使用Scikit-learn的StratifiedShuffleSplit类进行分层抽样
from sklearn.model_selection import StratifiedShuffleSplit
split = StratifiedShuffleSplit(n_splits=1, test_size=0.25, random_state=42)
for train_index, test_index in split.split(data1, data1["class"]):
    strat_train_set = data1.loc[train_index]
    strat_test_set = data1.loc[test_index]
train_set = strat_train_set.drop("class", axis=1) # 移除训练集的标签
train_labels = strat_train_set["class"].copy()
test_set = strat_test_set.drop("class", axis=1) # 移除测试集的标签
test_labels = strat_test_set["class"].copy()

请问我在此过程中遗漏了什么内容,导致出现该错误?


问题分析与解决方案

从你给出的分层抽样代码来看,逻辑本身是完全没问题的——StratifiedShuffleSplit的调用、数据集拆分和标签分离的步骤都符合规范。结合你「仅在Jupyter/Colab报错、本地电脑正常」的情况,问题大概率出在环境差异或数据预处理的隐性遗漏上,我给你梳理几个最可能的原因:

  • FCM依赖库的版本不一致
    你本地电脑和云端环境中,FCM算法对应的库(比如scikit-fuzzy)版本可能存在差异。新版本的库往往会对输入数据的格式、类型、完整性有更严格的校验——比如要求输入数组是float32而非float64,或者不允许存在缺失值。你可以在两边分别运行pip show scikit-fuzzy查看版本,然后把云端环境的库版本统一成本地的试试。

  • 数据集的隐性差异
    虽然你用的是同一个数据集,但在云端加载的数据可能存在未处理的问题:比如本地已经清理过缺失值,但上传到Colab的原始数据还有NaN;或者data1["class"]列在云端是字符串类型,而本地是整数类型,FCM算法对标签的类型有明确要求。
    你可以在代码开头加几行检查代码排查:

    # 检查各列缺失值数量
    print(data1.isnull().sum())
    # 检查所有列的数据类型
    print(data1.dtypes)
    # 查看class列的唯一值及类型
    print(data1["class"].unique(), type(data1["class"].iloc[0]))
    
  • 数据标准化/归一化步骤遗漏
    FCM算法对数据的尺度极其敏感,如果你的本地代码中做了数据标准化(比如用StandardScaler或MinMaxScaler),但在云端代码里漏掉了这一步,就很可能触发ValidationError。比如你本地可能有这段代码但云端没加:

    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    train_set = scaler.fit_transform(train_set)
    test_set = scaler.transform(test_set)
    
  • 云端环境的依赖兼容性问题
    Colab默认会使用较新的numpy、scipy版本,而某些FCM库的旧版本和新依赖不兼容——比如numpy数组的维度处理逻辑变化,导致FCM内部的验证逻辑报错。你可以尝试降级相关依赖来测试:

    !pip install numpy==1.21.6 scipy==1.7.3 scikit-fuzzy==0.4.2
    

内容的提问来源于stack exchange,提问作者partho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 11:32:50