我是这个领域的新人。我正在使用spyder运行我的代码:我正在尝试运行简单的离开sklearn的交叉验证代码:
from sklearn.cross_validation import train_test_split
from sklearn.cross_validation import LeaveOneOut
X = [1, 2 ,3, 4]
loo = LeaveOneOut()
for train, test in loo.split(X):
print ("%s %s" %(train, test))
我收到以下错误:
TypeError: __init__() takes exactly 2 arguments (1 given)
我理解原因,但不知道该在这里传递什么。
答案 0 :(得分:3)
您应该传递数据集中的元素总数。以下代码供您参考
import numpy as np
from sklearn.cross_validation import LeaveOneOut
X = np.array([1, 2 ,3, 4])
loo = LeaveOneOut(4)
for train_idx, test_idx in loo:
print X[train_idx], X[test_idx]
答案 1 :(得分:2)
将LeaveOneOut
的导入行更改为
from sklearn.model_selection import LeaveOneOut
(See documentation)。那么你的代码应该可以工作。
如果要从sklearn.cross_validation
导入,则语法略有不同(see here)。