scipy optimize 擬合曲線

2021-09-20 18:37:06 字數 1211 閱讀 8783

這個擬合曲線是真正意義的運用最下二乘法進行擬合的,先算出來擬合直線k和b,在畫圖。

和seaborn那個擬合不一樣,那個是做分類處理而已。

###最小二乘法試驗###

import numpy as np

from scipy.optimize import leastsq

###取樣點(xi,yi)###

xi=np.array([8.19,2.72,6.39,8.71,4.7,2.66,3.78])

yi=np.array([7.01,2.78,6.47,6.71,4.1,4.23,4.05])

##需要擬合的函式func及誤差error###

# 第一次給乙個初始值k和b,給乙個x,求乙個y

def func(p,x):

k,b=p

return k*x+b

# 計算我模擬的函式和真實值的誤差。

def error(p,x,y,s):

print (s)

return func(p,x)-y #x、y都是列表,故返回值也是個列表

#test

p0=[100,2] # 給定模擬曲線的初始值k和b

#print( error(p0,xi,yi) )

###主函式從此開始###

s="test the number of iteration" #試驗最小二乘法函式leastsq得呼叫幾次error函式才能找到使得均方誤差之和最小的k、b

para=leastsq(error,p0,args=(xi,yi,s)) #把error函式中除了p以外的引數打包到args中

k,b=para[0]

print("k=",k,'\n',"b=",b)

###繪圖,看擬合效果###

import matplotlib.pyplot as plt

plt.figure(figsize=(8,6))

plt.scatter(xi,yi,color="red",label="sample point",linewidth=3) #畫樣本點

x=np.linspace(0,10,1000)

y=k*x+b

plt.plot(x,y,color="orange",label="fitting line",linewidth=2) #畫擬合直線

plt.legend()

plt.show()

擬合專題 直線擬合

閒來無事,整理下擬合方面的一些方法 部分內容參考gloomyfish grooveboy等部落格,在此先行謝過 直線擬合方法主流方法有最小二乘 hough兩種,其他如halcon上的最小距離也是最小二乘的思想,其他如hough變換和最小二乘結合 混沌粒子群結合等等 1 最小二乘擬合直線 曲線擬合中最...

過擬合欠擬合

一篇文章,帶你明白什麼是過擬合,欠擬合以及交叉驗證 在本文中也許你會掌握機器學習中最核心的概念 偏差 方差權衡.其主要想法是,你想建立盡可能 準確並且仍能適用於新資料的模型 這是泛化 危險的是,你可以輕鬆的在你制定的資料中建立過度擬合本地噪音的模型,這樣的模型是無用的,並且導致弱泛化能力,因為雜訊是...

過擬合 欠擬合

無論在機器學習還是深度學習建模當中都可能會遇到兩種最常見結果,一種叫過擬合 over fitting 另外一種叫欠擬合 under fitting 所謂過擬合 over fitting 其實就是所建的機器學習模型或者是深度學習模型在訓練樣本中表現得過於優越,導致在驗證資料集以及測試資料集中表現不佳。...