スポンサーリンク

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,)

単純なミスですがありがちですね。

覚えておきたいエラーです。

スポンサーリンク