Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

error of making a test and train data split in sklearn

I am trying to make a test and train data split by "train_test_split". Why I got the error "At least one array required as input".

The input of "train_test_split" can be array and dataFrame, right ?

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
like image 825
user3448011 Avatar asked Dec 19 '22 02:12

user3448011


1 Answers

From the sklearn docs the arrays are handled with positional item unpacking ("*args").

You are using keyword arguments, "x=" and "y=", which it tries to handle by looking if "x" and "y" are the names of special keyword options.

Try:

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

(removing the keyword argument names from the arrays).

like image 107
ely Avatar answered Dec 26 '22 11:12

ely