运行代码时出现NameError: name 'cross_validation'未定义问题求助
解决scikit-learn 0.19.1中
cross_validation未定义的错误 这个问题我之前踩过坑!在scikit-learn 0.18版本之后,cross_validation模块就被废弃并迁移到model_selection子模块里了,所以你直接调用cross_validation会触发NameError。
具体修复方案:
调整导入语句:
如果你之前写的是:from sklearn import cross_validation请替换成下面两种方式之一:
方式一(推荐,直接导入需要的函数):from sklearn.model_selection import train_test_split方式二(保留
cross_validation的调用习惯):import sklearn.model_selection as cross_validation修改报错代码行:
如果你用了方式一的导入,直接把报错代码改成:X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)如果你用了方式二的导入,原来的代码行可以保持不变,就能正常运行了。
额外说明:
scikit-learn从0.18版本开始,就把所有交叉验证相关的工具(包括train_test_split、KFold等)统一归集到sklearn.model_selection下,旧的cross_validation模块只是临时做了兼容处理,但在0.19.1版本里已经不再默认提供顶层引用,所以才会出现未定义的错误。建议尽量使用新的模块路径,避免后续版本升级时再次遇到类似问题。
内容的提问来源于stack exchange,提问作者toto01
相关产品推荐
相关产品推荐

