2016-01-16 27 views
1

假设我有如下训练数据:机器学习测试数据需要有列名吗?

Age:12 Height:150 Weight:100  Gender:M 
Age:15 Height:145 Weight:80  Gender:F 
Age:17 Height:147 Weight:110  Gender:F 
Age:11 Height:144 Weight:130  Gender:M 

我训练我的数据,并得到了模型中,如果我需要通过对预测一个试验观察后,我是否需要与列名如下发送数据?

Age: 13 Height:142 Weight :90 

我一些情况下,我看到人们在一个阵列发送测试数据,而列名。我不确定算法是如何工作的。

注意:我使用python scikit-learn,我的训练数据是dataFrame。所以我不确定我的测试数据是否也应该是dataFrame格式

回答

0

你是否在预测性别?

如果是这样,那么是的。您的输入是包含列的记录:Age,HeightWeight

否则,您将预测缺少Gender值的记录。如果您的模型不允许缺少字段/列,则可以获得KeyError

我不知道我的测试数据是否也应该在数据帧格式

简而言之:是的。

通常你这样做:

# X is your input data, the format depends on how your model (pre)process the data. 
# It could be a numeric matrix, a list of dict's, a list of strings, etc. 
X_train, X_test, y_train, y_test = train_test_split(X, y) 
# Fit and validate. 
clf.fit(X_train, y_train) 
y_pred = clf.predict(X_test) 

所以,你的训练和测试数据都是相同的格式,或者至少在兼容格式(即:一个大熊猫据帧是用的dictlist兼容) 。

+0

感谢Rolando ..考虑到我已经使用train_test_split或K-fold CV对足够的数据进行了训练并完成了评估。现在,我只需要发送一个测试观察数据(例如,我从前端工具传递数据),我需要找到一种方法将来自用户的输入数据作为数据框放入相应的列名称中,并将其传递给预测功能正确? –

+0

@GopalK没有看到你的代码很难判断你是否严格需要传递一个数据框。但是,是的,'predict'的输入是一系列与您传递给'fit'的格式相同的观察值。 – Rolando