使用PyCaret训练模型时报ValueError:shuffle为False时random_state无效如何解决
报错原因
你调用setup函数时传入的session_id=2参数,作用是给数据集拆分、模型初始化等步骤设置固定随机种子,保证实验结果可复现,等价于设置了random_state=2。
但当前数据集拆分的shuffle参数为False,拆分训练集、测试集时不会打乱数据顺序,此时设置随机种子没有任何作用,因此触发了该ValueError。
解决方法
根据你的业务场景二选一即可:
- 如果你做的是普通表格类任务,允许打乱数据集顺序,在
setup中新增shuffle=True参数即可,既可以保留session_id的可复现性,也可以解决报错。修改后代码示例:
# 注意:目标列Survived是分类标签,分类任务请导入classification模块 from pycaret.classification import * clf1 = setup(data = df, target = 'Survived', train_size = 0.7, session_id = 2, shuffle=True) best=compare_models()
- 如果你做的是时序类任务,不能打乱数据顺序,直接去掉
session_id参数即可,保持random_state为默认的None就不会触发报错。修改后代码示例:
# 确认是回归任务、且不允许打乱数据时使用 from pycaret.regression import * clf1 = setup(data = df, target = 'Survived', train_size = 0.7) best=compare_models()
额外提示:你当前导入的回归模块和目标列的分类任务不匹配,若为分类场景请务必替换导入的模块为
pycaret.classification,避免后续出现其他不符合预期的错误。
内容的提问来源于stack exchange,提问作者guilherme guerra
相关产品推荐
相关产品推荐

