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

SVM训练报错类别数需大于1,但训练标签含两类问题排查

问题原因及解决方案

出现这个矛盾的核心原因是你将训练标签转换成了二维数组((n_samples, 1)),而ART的SklearnClassifier在传递标签给底层SVM模型时,对二维标签的处理不符合预期。

尽管np.unique(train_labels)显示存在[0,1]两类,但二维格式的标签会干扰模型的类别检测逻辑:

  • Sklearn原生SVC虽理论上支持二维标签作为单输出分类,但ART封装后的SklearnClassifier在处理时,可能误将二维结构识别为多输出任务,或是在内部转换过程中丢失了类别多样性的判断依据。

修复步骤

  1. 直接移除标签维度转换代码:删掉train_labels = train_labels.reshape(-1,1)这一行。
  2. 若后续有保留维度转换的需求,可将二维数组转回一维:
    train_labels = train_labels.ravel()  # 替代reshape(-1,1)操作
    

修改后的训练段代码示例:

# split data
train_features, test_features, train_labels, test_labels = train_test_split(features, enclabels, test_size=0.2)
train_labels = train_labels.ravel()

# train model
model = SVC(C=1.0, kernel="rbf")
classifier = SklearnClassifier(model=model)
classifier.fit(train_features, train_labels)

调整后标签回到(n_samples,)的一维格式,ART分类器就能正确识别两类标签,解决训练时的报错问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:37:35