您好,登錄后才能下訂單哦!
這篇文章主要介紹“python散點圖怎么添加擬合線并顯示擬合方程與R方”,在日常操作中,相信很多人在python散點圖怎么添加擬合線并顯示擬合方程與R方問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python散點圖怎么添加擬合線并顯示擬合方程與R方”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
polyfit()函數(shù)可以使用最小二乘法將一些點擬合成一條曲線。
numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False) # x:要擬合點的橫坐標 # y:要擬合點的縱坐標 # deg:自由度.例如:自由度為2,那么擬合出來的曲線就是二次函數(shù),自由度是3,擬合出來的曲線就是3次函數(shù)
首先我們先來構(gòu)造一下需要被擬合的散點
# 解決坐標軸刻度負號亂碼 plt.rcParams['axes.unicode_minus'] = False # 解決中文亂碼問題 plt.rcParams['font.sans-serif'] = ['Simhei'] import numpy as np import matplotlib.pyplot as plt x = np.arange(-1, 1, 0.02) y = 2 * np.sin(x * 2.3) + np.random.rand(len(x))
然后打印一下看看
plt.scatter(x, y) plt.show()
然后用polyfit函數(shù)來把這些點擬合成一條3次曲線
parameter = np.polyfit(x, y, 3)
輸出的結(jié)果為3次方程的參數(shù),我們可以像下面這樣把方程拼接出來
y2 = parameter[0] * x ** 3 + parameter[1] * x ** 2 + parameter[2] * x + parameter[3]
將擬合后的結(jié)果打印一下
plt.scatter(x, y) plt.plot(x, y2, color='g') plt.show()
還可以使用poly1d()函數(shù)幫我們拼接方程,結(jié)果是一樣的
p = np.poly1d(parameter) plt.scatter(x, y) plt.plot(x, p(x), color='g') plt.show()
評估指標R方
二維散點進行任意函數(shù)的最小二乘擬合
最小二乘中相關(guān)系數(shù)與R方的關(guān)系推導(dǎo)
其中,
利用相關(guān)系數(shù)矩陣計算R方
correlation = np.corrcoef(y, y2)[0,1] #相關(guān)系數(shù) correlation**2 #R方
先來看下poly1d函數(shù)自帶的輸出結(jié)果
p = np.poly1d(parameter,variable='x') print(p)
這里是把結(jié)果輸出到兩行里了,但是輸出到兩行是非常不方便的
嘗試下自己編寫函數(shù),使輸出到一行里
parameter=[-2.44919641, -0.01856314, 4.12010434, 0.47296566] #系數(shù) aa='' deg=3 for i in range(deg+1): bb=round(parameter[i],2) #bb是i次項系數(shù) if bb>=0: if i==0: bb=str(bb) else: bb=' +'+str(bb) else: bb=' '+str(bb) if deg==i: aaaa=aa+bb else: aaaa=aa+bb+'x^'+str(deg-i) print(aa)
封裝成函數(shù)
def Curve_Fitting(x,y,deg): parameter = np.polyfit(x, y, deg) #擬合deg次多項式 p = np.poly1d(parameter) #擬合deg次多項式 aa='' #方程拼接 —————————————————— for i in range(deg+1): bb=round(parameter[i],2) if bb>0: if i==0: bb=str(bb) else: bb='+'+str(bb) else: bb=str(bb) if deg==i: aaaa=aa+bb else: aaaa=aa+bb+'x^'+str(deg-i) #方程拼接 —————————————————— plt.scatter(x, y) #原始數(shù)據(jù)散點圖 plt.plot(x, p(x), color='g') # 畫擬合曲線 # plt.text(-1,0,aa,fontdict={'size':'10','color':'b'}) plt.legend([aa,round(np.corrcoef(y, p(x))[0,1]**2,2)]) #拼接好的方程和R方放到圖例 plt.show() # print('曲線方程為:',aa) # print(' r^2為:',round(np.corrcoef(y, p(x))[0,1]**2,2))
利用封裝的函數(shù)重新畫圖
Curve_Fitting(x,y,3)
到此,關(guān)于“python散點圖怎么添加擬合線并顯示擬合方程與R方”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。