股票量化分析(13)——直线拟合、曲线拟合、方差计算

来源:互联网 发布:linux删除整个文件夹 编辑:程序博客网 时间:2024/05/18 04:00

这里直线拟合需要用到statsmodels这个库;
曲线拟合需要用到np.polynomial.Chebyshev.fit()这个函数;
方差计算需要用到sklearn这个库。

首先来看直线拟合,这里拟合’600848’这只股票一年的收市的股价。

import tushare as tsimport pandas as pdimport matplotlib.pyplot as pltimport numpy as npimport talibdf=ts.get_hist_data('600848',start='2015-01-01',end='2015-12-31')df=df.sort_index()df.index=pd.to_datetime(df.index,format='%Y-%m-%d')#收市股价close= df.closex=np.arange(0,len(close))y=close.valuesimport statsmodels.api as smfrom statsmodels import regressiondef regress_y(y):    x=np.arange(0,len(y))    x=sm.add_constant(x)    model=regression.linear_model.OLS(y,x).fit()    return modelmodel=regress_y(close)b=model.params[0]k=model.params[1]y_fit=k*x+bplt.plot(x,y)plt.plot(x,y_fit,'r')

这里写图片描述

接着来看一下用sklearn计算偏差绝对值之和(MAE),偏差平方(MSE),偏差平方和开平方(RMSE)

from sklearn import metricsMAE=metrics.mean_absolute_error(y,y_fit)MSE=metrics.mean_squared_error(y,y_fit)RMSE=np.sqrt(MSE)

最后来看一下多项式拟合,这里取得是9项:

#多项式拟合p=np.polynomial.Chebyshev.fit(x,y,9)y_fit_n=p(x)plt.plot(x,y,'',x,y_fit_n,'r')

这里写图片描述

阅读全文
0 0
原创粉丝点击