溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python散點圖怎么添加擬合線并顯示擬合方程與R方

發(fā)布時間:2021-11-02 09:35:59 來源:億速云 閱讀:2657 作者:iii 欄目:編程語言

這篇文章主要介紹“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()

python散點圖怎么添加擬合線并顯示擬合方程與R方

然后用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()

python散點圖怎么添加擬合線并顯示擬合方程與R方

還可以使用poly1d()函數(shù)幫我們拼接方程,結(jié)果是一樣的

p = np.poly1d(parameter) plt.scatter(x, y) plt.plot(x, p(x), color='g') plt.show()
python散點圖怎么添加擬合線并顯示擬合方程與R方

評估指標R方

二維散點進行任意函數(shù)的最小二乘擬合

python散點圖怎么添加擬合線并顯示擬合方程與R方

最小二乘中相關(guān)系數(shù)與R方的關(guān)系推導(dǎo)

python散點圖怎么添加擬合線并顯示擬合方程與R方

其中,

python散點圖怎么添加擬合線并顯示擬合方程與R方

利用相關(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)

python散點圖怎么添加擬合線并顯示擬合方程與R方

這里是把結(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)

python散點圖怎么添加擬合線并顯示擬合方程與R方

封裝成函數(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)

python散點圖怎么添加擬合線并顯示擬合方程與R方

到此,關(guān)于“python散點圖怎么添加擬合線并顯示擬合方程與R方”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責(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)容。

AI