スポンサーリンク
train_test_split()でValueError: Found input variables with inconsistent numbers of samples: [6, 5]のエラーメッセージ
今回、train_test_split()を使っている際に、ValueError: Found input variables with inconsistent numbers of samples: [6, 5]のメッセージが出ました。
結論としては、train_test_split()に渡す、説明変数と目的変数のnumpy配列の形状にミスマッチがありました。
下記がその時のコードになります。下記はエラーとなります。
$ cat sample.py #!/usr/bin/env python3 # coding: UTF-8 import numpy as np from sklearn.model_selection import train_test_split listX = [[1, 2, 3], [2, 2, 5], [3, 4, 7], [1, 5, 3], [7, 9, 5], [3, 0, 9]] listY = [1, 2, 3, 7, 8] ndarrayX = np.array(listX) ndarrayY = np.array(listY) print("ndarrayX.shape:", ndarrayX.shape) print("ndarrayY.shape:", ndarrayY.shape) x_train, x_test, y_train, y_test = train_test_split(ndarrayX, ndarrayY, test_size=0.3)
スポンサーリンク
NumPy配列のshapeを揃えて解決
NumPy配列のshapeをprint出力してみると、
print("ndarrayX.shape:", ndarrayX.shape) print("ndarrayY.shape:", ndarrayY.shape)
6行と5行でミスマッチです。
ndarrayX.shape: (6, 3) ndarrayY.shape: (5,)
listYを下記のように、6要素にして揃えると、ミスマッチが解消されました。
listX = [[1, 2, 3], [2, 2, 5], [3, 4, 7], [1, 5, 3], [7, 9, 5], [3, 0, 9]] listY = [1, 2, 3, 7, 8, 9]
再度実行すると、下記のように両方の行数が揃いました。
$ ./sample.py ndarrayX.shape: (6, 3) ndarrayY.shape: (6,)
単純なミスですがありがちですね。
覚えておきたいエラーです。
スポンサーリンク