2016-01-16 56 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