2012-11-04 74 views
7

Tôi đã tính toán mô hình bằng cách sử dụng OLS (hồi quy tuyến tính nhiều). Tôi chia dữ liệu của tôi để đào tạo và kiểm tra (một nửa), và sau đó tôi muốn dự đoán giá trị cho nửa thứ hai của các nhãn.Dự đoán các giá trị sử dụng mô hình OLS với mô hình thống kê

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

Vấn đề là tôi nhận được và báo lỗi: File "/usr/local/lib/python2.7/dist-packages/statsmodels-0.5.0-py2.7-linux-i686.egg/ statsmodels/hồi quy/linear_model.py", dòng 281, trong dự đoán trở np.dot (exog, params) ValueError: ma trận không phải là aligned

tôi có các hình dạng mảng sau: data.shape: (426, 215) labels.shape: (426,)

Nếu tôi chuyển đầu vào thành model.predict, tôi sẽ nhận được Kết quả là, nhưng với một hình dạng của (426.213), vì vậy tôi cho rằng sai của nó cũng như (Tôi hy vọng một vector của 213 số như dự đoán nhãn):

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

Bất kỳ ý tưởng làm thế nào để có được nó để làm việc?

Trả lời

11

Đối statsmodels> = 0.4, nếu tôi nhớ không lầm

model.predict không biết về các thông số, và đòi hỏi họ trong cuộc gọi thấy http://statsmodels.sourceforge.net/stable/generated/statsmodels.regression.linear_model.OLS.predict.html

gì nên làm việc trong trường hợp của bạn là để phù hợp với và sau đó sử dụng phương pháp dự đoán của cá thể kết quả.

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

hoặc ngắn hơn

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 với thiếu docstring

Lưu ý: đây đã được thay đổi trong phiên bản phát triển (tương thích ngược), mà có thể tận dụng "công thức" thông tin trong dự đoán http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.RegressionResults.predict.html

+0

Mặc dù đây là câu trả lời đúng cho câu hỏi LỚN CẢNH BÁO về việc ghép mô hình và tách dữ liệu. Bạn nên sử dụng 80% dữ liệu (hoặc phần lớn hơn) để đào tạo/lắp và 20% (phần còn lại) để kiểm tra/dự đoán. Chia tách dữ liệu 50:50 giống như mèo Schrodingers. Chúng tôi không tự tin rằng dữ liệu của chúng tôi đều tốt hay sai. Vì vậy, sự tự tin trong mô hình là một nơi nào đó ở giữa. Chúng tôi muốn có sự tự tin hơn trong mô hình của mình, do đó chúng tôi nên tập trung vào nhiều dữ liệu hơn để kiểm tra. – lukassos

Các vấn đề liên quan