【发布时间】:2018-04-30 11:58:28
【问题描述】:
我正在尝试按“train_test_split”进行测试和训练数据拆分。 为什么我收到错误“至少需要一个数组作为输入”。
“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
【问题讨论】:
-
x和y不应作为位置参数而不是关键字参数提供,因此请从调用中删除x =和y =。 -
您的索引也可能有误(不清楚)。您重塑为 (rowNum, colNum) 大小,但后来您使用 rowNum 在第二个(按列)维度中建立索引。因此,即使在修复了原始错误之后,您仍然可能会看到不相关的问题。如果是这样,请在单独的问题中询问他们:)
标签: python-3.x numpy scikit-learn