2013-05-07 49 views
7

Tôi đang cố gắng tìm hiểu một mô hình bình phương nhỏ nhất bằng cách sử dụng thư viện thống kê mô-đun của Python, như được mô tả here.Mô hình thống kê Python OLS: cách lưu mô hình đã học thành tệp

sm.OLS.fit() trả về mô hình đã học. Có cách nào để lưu nó vào tập tin và tải lại nó? Dữ liệu đào tạo của tôi rất lớn và mất khoảng nửa phút để tìm hiểu mô hình. Vì vậy, tôi đã tự hỏi nếu có khả năng lưu/tải tồn tại trong mô hình OLS.

Tôi đã thử phương pháp repr() trên đối tượng mô hình nhưng không trả lại bất kỳ thông tin hữu ích nào.

Trả lời

14

Tất cả các kiểu và kết quả đều có phương thức lưu và tải, vì vậy bạn không cần sử dụng trực tiếp mô-đun chọn.

Sửa để thêm một ví dụ:

import statsmodels.api as sm 

data = sm.datasets.longley.load_pandas() 

data.exog['constant'] = 1 

results = sm.OLS(data.endog, data.exog).fit() 
results.save("longley_results.pickle") 

# we should probably add a generic load to the main namespace 
from statsmodels.regression.linear_model import OLSResults 
new_results = OLSResults.load("longley_results.pickle") 

# or more generally 
from statsmodels.iolib.smpickle import load_pickle 
new_results = load_pickle("longley_results.pickle") 

Chỉnh sửa 2 Bây giờ chúng ta đã thêm một phương pháp load để statsmodels chính API trong tổng thể, vì vậy bạn chỉ có thể làm

new_results = sm.load('longley_results.pickle') 
+1

Ngoài , nếu bạn sử dụng kết quả ngâm và mô hình chỉ để dự đoán, thì có thể loại bỏ dữ liệu đào tạo (nhưng nhiều phương thức sẽ không hoạt động nữa) statsmodels.sourceforge.net/devel/generated/statsmodels.regr ession.linear_model.RegressionResults.save.html – user333700

+0

@jseabold bạn có thể đưa ra một ví dụ không? – Nik

+0

Chắc chắn. Đã chỉnh sửa để thêm ví dụ. – jseabold

5

Tôi đã cài đặt thư viện mô hình thống kê và thấy rằng bạn có thể lưu các giá trị bằng cách sử dụng pickle module trong python.

Mô hình và kết quả có thể chọn qua lưu/tải, tùy chọn lưu dữ liệu mô hình. [source]

Như một ví dụ:

Cho rằng bạn có kết quả lưu trong kết quả khác nhau:

Để lưu file:

import pickle  
with open('learned_model.pkl','w') as f: 
    pickle.dump(results,f) 

Để đọc các file:

import pickle 
with open('learned_model.pkl','r') as f: 
    model_results = pickle.load(f) 
Các vấn đề liên quan