TypeError: Singleton array array(0.2) cannot be considered a valid collection.
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 值来训练我的模型。然而,我希望先分割我的数据框,然后再进行训练和测试。
任何帮助都将不胜感激。
回答:
一个不太为人所知的事实是,train_test_split
可以分割任意数量的数组,而不仅仅是两个(“训练”和“测试”)。请查看链接的文档和源代码以获取更多信息。
例如,
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
换句话说,指定测试集大小的唯一方法是使用关键字参数 test_size
。所有位置参数都被假定为要分割的集合,在你的情况下,由于你使用的是
train_test_split(X, y, 0.2)
函数试图分割 0.2
,但由于浮点数不是集合,所以会引发错误。解决方案是(如前所述),指定关键字参数:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)