在Sklearn留下一个

时间:2017-03-20 03:38:29

标签: python scikit-learn

我是这个领域的新人。我正在使用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)

我理解原因,但不知道该在这里传递什么。

2 个答案:

答案 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)。