使用sklearn train_test_split的“ TypeError:单例数组不能被视为有效集合”

时间:2018-12-16 07:45:07

标签: python pandas numpy machine-learning scikit-learn

TypeError:单例数组array(0.2)不能被视为有效集合。

X = df.iloc[:, [1,7]].values
y= df.iloc[:,-1].values
from sklearn.model_selection import train_test_split 
X_train, X_test, y_train, y_test = train_test_split(X, y, 0.2)

尝试train_test_split时出现此错误。我能够使用X和y值训练我的模型。但是,我想拆分数据框,然后对其进行训练和测试。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

一个鲜为人知的事实是train_test_split可以拆分任意数量的数组,而不仅仅是两个数组(“ train”和“ test”)。有关更多信息,请参见链接的文档和source code

例如

np.random.seed(0)
df1 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD'))
y = df1.pop('C')
z = df1.pop('D')
X = df1

splits = train_test_split(X, y, z, test_size=0.2)
len(splits)
# 6

IOW,指定测试大小的唯一方法是通过指定关键字参数test_size。假定所有位置参数都是要拆分的集合,在这种情况下,因为您这样做

train_test_split(X, y, 0.2)

该函数尝试拆分0.2,但是由于float不是集合,因此会引发错误。解决方案是(如前所述)指定关键字参数:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)