web-dev-qa-db-ja.com

"TypeError:シングルトン配列は有効なコレクションとは見なされません" sklearn train_test_splitを使用

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値を使用してモデルをトレーニングできます。ただし、データフレームを分割し、トレーニングしてテストしたいと思います。

どんな助けでもありがたいです。

3
John Samuel

train_test_split は、2つだけではなく、任意の数の配列を分割できる( "train"と "test")ということはあまり知られていない事実です。詳細については、リンクされたドキュメントと ソースコード を参照してください。

例えば、

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)
4
cs95