2017-11-16 8 views
1

"train_test_split"でデータを分割してテストしようとしています。 なぜ「少なくとも1つのアレイが入力として必要です」というエラーが表示されました。テストを作成してsklearnで列車データを分割するエラー

"train_test_split"の入力はarrayとdataFrameのどちらでもかまいません。

import pandas as pd 
import numpy as np 
from rpy2.robjects.packages import importr 
import rpy2.robjects as ro 
import pandas.rpy.common as rpy_common 
from sklearn.model_selection import train_test_split 

def la(): 
ro.r('library(MASS)') 
pydf = rpy_common.load_data(name = 'Boston', package=None, convert=True) 
pddf = pd.DataFrame(pydf) 
targetIndex = pddf.columns.get_loc("medv") 

# make train and test data 
rowNum = pddf.shape[0] 
colNum = pddf.shape[1] 
print(type(pddf.as_matrix())) 
print(pddf.as_matrix().shape) 
m = np.asarray(pddf.as_matrix()).reshape(rowNum,colNum) 
print(type(m)) 
x_train, x_test, y_train, y_test = train_test_split(x = m[:, 0:rowNum-2], \ 
                y = m[:, -1],\ 
                test_size = 0.5) 
# error:  raise ValueError("At least one array required as input") 
ValueError: At least one array required as input 
+1

'x'と' y'はキーワード引数ではない位置引数として提供されるはずなので、 'x ='と 'y ='を呼び出しから取り除きます。 –

+0

インデックスにもエラーがある可能性があります(不明です)。あなたは(rowNum、colNum)のサイズに変形しますが、後でrowNumを使用して2番目(列方向)の次元にインデックスを付けます。オリジナルのエラーを修正した後でも、関連のない問題が表示されることがあります。もしそうなら、別の質問でそれらに尋ねてください:) – ely

答えて

1

sklearn docsから、配列はポジション項目の展開( "* args")で処理されます。

"x ="と "y ="というキーワード引数を使用しています。 "x"と "y"が特殊なキーワードオプションの名前であるかどうかを調べることで処理しようとします。

試してみてください。

train_test_split(m[:, 0:rowNum-2], m[:, -1], test_size=0.5) 

(アレイからキーワード引数名​​を削除します)。

関連する問題