我一直在努力阅读 Vanderplass 的书,现在我已经被困在这个牢房里好几天了:from sklearn.model_selection import cross_val_scorecross_val_score(model, X, y, cv=5)from sklearn.model_selection import LeaveOneOutscores = cross_val_score(model, X, y, cv=LeaveOneOut(len(X)))scoresTypeError Traceback (most recent call last)<. ipython-input-78-029fa0c72898> in <module> 1 from sklearn.model_selection import LeaveOneOut ----> 2 scores = cross_val_score(model, X, y, cv=LeaveOneOut(len(X))) 3 scoresTypeError: LeaveOneOut() takes no argumentsimport sklearnsklearn.__version__0.22.1'在此先感谢您的帮助!卡梅伦
2 回答
慕容708150
TA贡献1831条经验 获得超4个赞
欢迎来到堆栈溢出!
错误显示LeaveOneOut() takes no arguments
,但是当您实例化时,LeaveOneOut
您将其len(X)
作为参数传递 (in LeaveOneOut(len(X))
)。
如果您将scores
行更改为下面的行,它应该可以工作:
scores = cross_val_score(model, X, y, cv=LeaveOneOut())
但是,请注意scikit-learn 文档中的警告:
注意:LeaveOneOut() 等同于 KFold(n_splits=n)...由于测试集数量很多(与样本数量相同),这种交叉验证方法的成本可能非常高。对于大型数据集,应该倾向于 KFold、ShuffleSplit 或 StratifiedKFold。
如果不清楚,建议使用例如 n=5 的 KFold,这通常会比 . 更好地为您服务LeaveOneOut
。
收到一只叮咚
TA贡献1821条经验 获得超4个赞
或者,也可以使用
from sklearn.model_selection import cross_val_score
cross_val_score(model, X, y, cv=5)
from sklearn.model_selection import LeaveOneOut
scores = cross_val_score(model, X, y, cv=LeaveOneOut().split(X))
scores
添加回答
举报
0/150
提交
取消