国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

自留-Python:線性擬合(直線+曲線)

這篇具有很好參考價值的文章主要介紹了自留-Python:線性擬合(直線+曲線)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

使用最小二乘法的線性擬合,自留代碼

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import rcParams
import math
import matplotlib

讀取數(shù)據(jù)

#(1)讀取excel數(shù)據(jù)
df = pd.read_excel(r'C:\Users\Administrator\Desktop\worklist.xlsx')
data = np.array(df)

#(2)自己設(shè)定組數(shù)
X=np.array([0,1.34,2.25,4.67,7.2,9.6,12.79,15.61]) 
Y=np.array([0,12.5,25,50,100,200,400,800])

直線擬合

#定義直線擬合函數(shù)
def linear_regression(x, y): 
    N = len(x)
    sumx = sum(x)
    sumy = sum(y)
    sumx2 = sum(x**2)
    sumxy = sum(x*y)
 
    A = np.mat([[N, sumx], [sumx, sumx2]])
    b = np.array([sumy, sumxy])
 
    return np.linalg.solve(A, b)
 
a10, a11 = linear_regression(X, Y)


# 生成擬合直線的繪制點
_X1 = np.arange (0,20,0.01)
_Y1 = np.array([a10 + a11 * x for x in _X1])

#畫圖
plt.figure(figsize=(6,6))
plt.plot(_X1, _Y1, 'b', linewidth=2) 
plt.legend(bbox_to_anchor=(1,0),loc="lower left")
plt.title("y = {} + {}x".format(a10, a11)) #標題
plt.show()

python 直線擬合,大數(shù)據(jù),python

?曲線擬合

# 生成系數(shù)矩陣A
def gen_coefficient_matrix(X, Y): 
    N = len(X)
    m = 3
    A = []
    # 計算每一個方程的系數(shù)
    for i in range(m):
        a = []
        # 計算當前方程中的每一個系數(shù)
        for j in range(m):
            a.append(sum(X ** (i+j)))
    A.append(a)
    return A
 
# 計算方程組的右端向量b
def gen_right_vector(X, Y): 
    N = len(X)
    m = 3
    b = []
    for i in range(m):
        b.append(sum(X**i * Y))
    return b
 
A = gen_coefficient_matrix(X, Y) 
b = gen_right_vector(X, Y)
 
a0, a1, a2 = np.linalg.solve(A, b)
print(a0,a1,a2)

#繪制擬合曲線
_X = np.arange(0, 20, 0.01) 
_Y = np.array([a0 + a1*x + a2*x**2 for x in _X])


#畫圖
plt.figure(figsize=(10,6))
plt.plot(X,Y,'o',markersize=10,label='Hou等(2017)')

#plt.plot(_X, _Y, 'b', linewidth=2,label="$I$ = {:.2f} + {:.2e}$n$ +{:.2e}$n^2$ ".format(a0, a1, a2))    #{:.2f}等用于保留小數(shù)

plt.plot(_X, _Y, 'b', linewidth=2,label="式(1) ") 
#plt.gca().invert_yaxis()
plt.legend(fontsize=16,frameon=False)
#plt.legend(bbox_to_anchor=(0.5,-0.35),loc=10,ncol=2,frameon=False) #圖框
#plt.title("AI = {} + {}n + {}$n^2$ ".format(a0, a1, a2))   #標題
plt.show()

python 直線擬合,大數(shù)據(jù),python

?文章來源地址http://www.zghlxwxcb.cn/news/detail-521238.html

到了這里,關(guān)于自留-Python:線性擬合(直線+曲線)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包