如何使用LeaveOneOut解决TypeError

时间:2020-08-13 14:45:53

标签: python scikit-learn

我一直在努力阅读《范德普拉斯》这本书,而现在我在这个牢房里呆了几天了:

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(len(X)))
scores

TypeError                                 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 scores

TypeError: LeaveOneOut() takes no arguments

import sklearn
sklearn.__version__
0.22.1'

在此先感谢您的帮助! 卡梅隆

1 个答案:

答案 0 :(得分:0)

欢迎堆栈溢出!

错误显示LeaveOneOut() takes no arguments,但是实例化LeaveOneOut时将其传递给len(X)作为参数(在LeaveOneOut(len(X))中)。

如果将scores行更改为下面的行,则该行应该有效:

scores = cross_val_score(model, X, y, cv=LeaveOneOut())

但是,请注意scikit-learn documentation中的警告:

注意:LeaveOneOut()等效于KFold(n_splits = n)...由于 大量测试集(与样本数量相同) 这种交叉验证方法可能会非常昂贵。对于大型数据集 人们应该偏爱KFold,ShuffleSplit或StratifiedKFold。

如果不清楚,则建议使用例如KFold的n = 5,通常比LeaveOneOut更好。