matlab 最小二乘法拟合_Scripy实现最小二乘法与股票K线回归
生活随笔
收集整理的這篇文章主要介紹了
matlab 最小二乘法拟合_Scripy实现最小二乘法与股票K线回归
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
python的Scripy提供了豐富的數學工具,python的科學計算包scipy的里面提供了一個函數,可以求出任意的想要擬合的函數的參數。那就是scipy.optimize包里面的leastsq函數。函數原型是: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)一般我們只要指定前三個參數就可以了:func 是我們自己定義的一個計算誤差的函數,x0 是計算的初始參數值args 是指定func的其他參數全部代碼如下:import?numpy?as?npimport matplotlib.pyplot as pltfrom scipy.optimize import leastsq##樣本數據(Xi,Yi),需要轉換成數組(列表)形式Xi = np.array([160, 165, 158, 172, 159, 176, 160, 162, 171])Yi = np.array([58, 63, 57, 65, 62, 66, 58, 59, 62])##需要擬合的函數func :指定函數的形狀 k= 0.42116973935 b= -8.28830260655def func(p, x): k, b = p return k * x + b##偏差函數:x,y都是列表:這里的x,y更上面的Xi,Yi中是一一對應的def error(p, x, y): return func(p, x) - y # k,b的初始值,可以任意設定,經過幾次試驗,發現p0的值會影響cost的值:Para[1]p0?=?[1,?20]# 把error函數中除了p0以外的參數打包到args中(使用要求)Para?=?leastsq(error,?p0,?args=(Xi,?Yi))print(Para)# 讀取結果k, b = Para[0]print("k=",?k,?"b=",?b)# 畫樣本點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個連續點y = k * x + b ##函數式plt.plot(x, y, color="red", label="target", linewidth=2)plt.legend() # 繪制圖例plt.show()七日最小二乘法對股票K線劃線十四日最小二乘回歸二十八日最下回歸劃線主要代碼#按不同步計算期間典型價格的線性回歸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) ?#逐個計算最近7天的趨勢everyDayErChengPrice(result,28)
總結
以上是生活随笔為你收集整理的matlab 最小二乘法拟合_Scripy实现最小二乘法与股票K线回归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iphone分屏功能怎么用_iPhone
- 下一篇: 机器人 知乎碧桂园_万亿负债之下,碧桂园