2012-11-04 65 views
7

我使用OLS(多元線性迴歸)計算了模型。我將我的數據分爲訓練和測試(各一半),然後我想預測下半部分標籤的價值。使用具有統計模型的OLS模型預測值

model = OLS(labels[:half], data[:half]) 
predictions = model.predict(data[half:]) 

的問題是,我得到的和錯誤: 文件「/usr/local/lib/python2.7/dist-packages/statsmodels-0.5.0-py2.7-linux-i686.egg/ statsmodels /迴歸/ linear_model.py」,線路281,在預測 返回np.dot(exog,則params) ValueError異常:矩陣不對準

我有以下陣列形狀: data.shape:(426, 215) labels.shape:(426,)

如果我將輸入轉置爲model.predict,我會得到結果但隨着(426213)的形狀,所以我想它的錯誤,以及(我希望213號的一個向量作爲標籤的預測):

model.predict(data[half:].T) 

不知道如何得到它的工作?

回答

11

對於statsmodels> = 0.4,如果我沒有記錯

model.predict不知道的參數,並要求他們在呼叫 看到http://statsmodels.sourceforge.net/stable/generated/statsmodels.regression.linear_model.OLS.predict.html

你應該在你的情況下工作,以適應模型,然後使用結果實例的預測方法。

model = OLS(labels[:half], data[:half]) 
results = model.fit() 
predictions = results.predict(data[half:]) 

或更短

results = OLS(labels[:half], data[:half]).fit() 
predictions = results.predict(data[half:]) 

http://statsmodels.sourceforge.net/stable/generated/statsmodels.regression.linear_model.RegressionResults.predict.html缺少文檔字符串

注:這已經在開發版本(向後兼容),在預測,可以採取的「公式」信息優勢被改變 http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.RegressionResults.predict.html

+0

雖然這是關於模型擬合和數據拆分的BIG WARNING問題的正確答案。您應該使用80%的數據(或更大的部分)進行培訓/測試,20%(其餘)用於測試/預測。將數據拆分爲50:50就像Schrodingers貓。我們不相信我們的數據都是好的或全部錯誤的。 因此,對模型的信心處於中間的某個位置。我們希望對我們的模型有更好的信心,因此我們應該訓練更多的數據然後進行測試。 – lukassos