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

StratifiedKFold初始化出现n_splits参数多值传递TypeError问题求助

问题触发原因

该报错由StratifiedKFold的参数传递逻辑错误导致:
你当前导入的是sklearn.model_selection模块下的新版StratifiedKFold,它的构造方法不接收数据集标签作为入参,第一个位置参数本身就是n_splits。你将iris.target作为第一个位置参数传入构造方法时,相当于已经给n_splits赋值了一次,后续又显式传入关键字参数n_splits=5,就触发了「参数重复赋值」的类型错误。

注:仅sklearn 0.19及更早版本中cross_validation模块下的旧版StratifiedKFold支持直接把标签传入构造方法,不要混用新旧版本的接口写法。

解决方法

新版StratifiedKFold的调用逻辑分为两步:

  1. 初始化StratifiedKFold实例,仅传入拆分配置参数(如折数、是否打乱、随机种子等)
  2. 调用实例的split()方法,传入特征矩阵和标签,获取拆分后的索引

修正后的可运行代码如下:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture
from sklearn import datasets
from sklearn.model_selection import KFold
from sklearn.model_selection import StratifiedKFold

iris = datasets.load_iris()

# 1. 初始化StratifiedKFold实例,仅传配置参数
skf = StratifiedKFold(n_splits=5)
# 2. 调用split方法传入特征和标签,获取拆分索引迭代器
indices = skf.split(iris.data, iris.target)

train_index, test_index = next(iter(indices))

X_train = iris.data[train_index]
y_train = iris.target[train_index]

X_test = iris.data[test_index]
y_test = iris.target[test_index]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:15:03