【statsmodels】快速实现回归预测
python
做线性回归分析有好几种方式,常要的是 scipy
包,statsmodels
包,以及 sklearn
包。
但是个人比较喜欢使用statsmodel
进行线性回归,一是其可以更好的呈现回归效果,二是其能够自动跳过缺失值。
sklearn
则不能方便地显示回归系数的显著性,而statsmodels
使用summary
方法就可以很直观的显示相关参数。statsmodels
对缺失值预测能够直接返回None
,而不报错。而如果被预测数据有缺失值,sklearn
的LinearRegression
缺会报错,这对高效进行回归预测是一个问题smf
进行预测的方式更加灵活,支持用字符串构造线性回归公式- 需要注意的一个点是,使用
smf
进行回归预测,如果将数据传回到df
中,最好使用df.loc[:,'column_name']
的形式,否则会有数据缺失的问题
import statsmodels.formula.api as smf
import pandas as pd
df = pd.read_csv('train.csv')
df['shift_wap'] = df.groupby(['stock_id','date_id'],as_index=False)['wap'].shift(-1).sort_index()
lr = smf.ols('shift_wap ~ ask_price + ask_size + wap + bid_price + bid_size+ reference_price + matched_size', data=df).fit()
print(lr.summary())
df.loc[:,'unexpected_wap'] = lr.predict(df[['ask_price','ask_size','wap','bid_price','bid_size','reference_price','matched_size']])