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

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

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

import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import talib

df=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.close
x=np.arange(0,len(close))
y=close.values
import statsmodels.api as sm
from statsmodels import regression

def regress_y(y):
    x=np.arange(0,len(y))
    x=sm.add_constant(x)
    model=regression.linear_model.OLS(y,x).fit()
    return model

model=regress_y(close)
b=model.params[0]
k=model.params[1]

y_fit=k*x+b

plt.plot(x,y)
plt.plot(x,y_fit,'r')

这里写图片描述

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

from sklearn import metrics
MAE=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')

这里写图片描述

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值