當(dāng)前位置:
首頁 >
matlab 最小二乘法拟合_Scripy实现最小二乘法与股票K线回归
發(fā)布時(shí)間:2024/7/23
39
豆豆
生活随笔
收集整理的這篇文章主要介紹了
matlab 最小二乘法拟合_Scripy实现最小二乘法与股票K线回归
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
python的Scripy提供了豐富的數(shù)學(xué)工具,python的科學(xué)計(jì)算包scipy的里面提供了一個(gè)函數(shù),可以求出任意的想要擬合的函數(shù)的參數(shù)。那就是scipy.optimize包里面的leastsq函數(shù)。函數(shù)原型是:leastsq(func,?x0,?args=(),?Dfun=None,?full_output=0,?col_deriv=0,?ftol=1.49012e-08,?xtol=1.49012e-08,?gtol=0.0,?maxfev=0,?epsfcn=0.0,?factor=100,?diag=None,?warning=True)一般我們只要指定前三個(gè)參數(shù)就可以了:func 是我們自己定義的一個(gè)計(jì)算誤差的函數(shù),x0 是計(jì)算的初始參數(shù)值args 是指定func的其他參數(shù)全部代碼如下:import?numpy?as?npimport matplotlib.pyplot as pltfrom scipy.optimize import leastsq##樣本數(shù)據(jù)(Xi,Yi),需要轉(zhuǎn)換成數(shù)組(列表)形式Xi = np.array([160, 165, 158, 172, 159, 176, 160, 162, 171])Yi = np.array([58, 63, 57, 65, 62, 66, 58, 59, 62])##需要擬合的函數(shù)func :指定函數(shù)的形狀 k= 0.42116973935 b= -8.28830260655def func(p, x): k, b = p return k * x + b##偏差函數(shù):x,y都是列表:這里的x,y更上面的Xi,Yi中是一一對應(yīng)的def error(p, x, y): return func(p, x) - y # k,b的初始值,可以任意設(shè)定,經(jīng)過幾次試驗(yàn),發(fā)現(xiàn)p0的值會影響cost的值:Para[1]p0?=?[1,?20]# 把error函數(shù)中除了p0以外的參數(shù)打包到args中(使用要求)Para?=?leastsq(error,?p0,?args=(Xi,?Yi))print(Para)# 讀取結(jié)果k, b = Para[0]print("k=",?k,?"b=",?b)# 畫樣本點(diǎn)plt.figure(figsize=(8, 6)) ##指定圖像比例:8:6plt.scatter(Xi,?Yi,?color="green",?label="source",?linewidth=2)# 畫擬合直線x = np.linspace(150, 190, 100) ##在150-190直接畫100個(gè)連續(xù)點(diǎn)y = k * x + b ##函數(shù)式plt.plot(x, y, color="red", label="target", linewidth=2)plt.legend() # 繪制圖例plt.show()七日最小二乘法對股票K線劃線十四日最小二乘回歸二十八日最下回歸劃線主要代碼#按不同步計(jì)算期間典型價(jià)格的線性回歸def?everyDayErChengPrice(sourceResult,step): p0=[1,20]????global?erChengPrice count=len(sourceResult) if count-step<0: return for i in range(count): temp=[] myStart=i myEnd=i+step if myEnd>count:????????????break XI=sourceResult.values[myStart:myEnd][:,0]????????YI=sourceResult['tprice'][myStart:myEnd]????????Para?=?leastsq(error,?p0,?args=(XI,?YI))????????k,?b?=?Para[0] temp.append(XI) temp.append(k * XI + b) erChengPrice.append(temp) ?#逐個(gè)計(jì)算最近7天的趨勢everyDayErChengPrice(result,28)
總結(jié)
以上是生活随笔為你收集整理的matlab 最小二乘法拟合_Scripy实现最小二乘法与股票K线回归的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iphone分屏功能怎么用_iPhone
- 下一篇: 在matlab中求协方差,matlab里