在sklearn中划分测试数据和训练数据时出现错误

4

我试图使用"train_test_split"函数对数据进行测试和训练的划分,但出现了错误提示:"至少需要一个输入数组"。

"train_test_split"函数的输入可以是数组或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

4
不应将 xy 作为位置参数提供,而应将它们作为关键词参数提供。因此,请从函数调用中删除 x = y = - Some Guy
你的索引可能也有错误(不确定)。你重新调整了大小为(rowNum,colNum),但后来在第二个(按列)维度中使用了rowNum作为索引。因此,即使修复了最初的错误,您仍可能会看到不相关的问题。如果有,请另外提问 :) - ely
1个回答

11
sklearn 文档 可以看出,它使用了位置参数解包("*args")来处理数组。
您正在使用关键字参数 "x=" 和 "y=",它会尝试通过查看 "x" 和 "y" 是否为特殊关键字选项的名称来处理它们。
请尝试:
train_test_split(m[:, 0:rowNum-2], m[:, -1], test_size=0.5)

(从数组中删除关键字参数名称)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接