最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實現(xiàn)最小二乘法的方法詳解

 更新時間:2024年04月30日 11:17:10   作者:菜鳥08哥  
這篇文章主要介紹了如何基于python實現(xiàn)最小二乘法的方法,文中有非常詳細的代碼示例,對正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下

本節(jié)用python實現(xiàn)最小二乘法。

1.最小二乘法

1.1 線性回歸

  • 主要是解決線性問題,無法解決非線性問題。線性回歸過程主要解決的是如何通過樣本獲取最佳的擬合線,最常用的方法是 最小二乘法。

1.2 最小二乘法

ps:在古代,“平方”的稱謂為“二乘”,故得最小二乘法。

2.2.1 數(shù)據(jù)擬合法和插值法
  • 數(shù)據(jù)擬合法不必過所有的數(shù)據(jù)點,關(guān)注數(shù)據(jù)的變化趨勢。
  • 插值法必須經(jīng)過所有的數(shù)據(jù)點。

1.2.1 原理

一種數(shù)學(xué)優(yōu)化技術(shù),通過最小化殘差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配。在數(shù)理統(tǒng)計中,殘差是指實際觀察值與估計值之間的差。力求總的擬合誤差(即總殘差)達到最小。

1.2.2 最小二乘法的求解過程

在這里插入圖片描述

1.2.3 python實現(xiàn)最小二乘法(預(yù)測學(xué)生身高體重為例)

擬合曲線

# 擬合曲線
import numpy as np
import matplotlib.pyplot as plt
import scipy as sp
from scipy.optimize import leastsq

# 樣本數(shù)據(jù)
# 身高數(shù)據(jù)
Xi = np.array([162, 165, 159, 173, 157, 175, 161, 164, 172, 158])
# 體重數(shù)據(jù)
Yi = np.array([48, 64, 53, 66, 52, 68, 50, 52, 64, 49])


# 需要擬合的函數(shù)func()指定函數(shù)的形狀
def func(p, x):
    k, b = p
    return k*x + b


# 定義偏差函數(shù),x,y為數(shù)組中對應(yīng)Xi,Yi的值
def error(p, x, y):
    return func(p, x) - y


# 設(shè)置k,b的初始值,可以任意設(shè)定,經(jīng)過實驗,發(fā)現(xiàn)p0的值會影響cost的值:Para[1]
p0 = [1, 20]

# 把error函數(shù)中除了p0以外的參數(shù)打包到args中,leastsq()為最小二乘法函數(shù)
Para = leastsq(error, p0, args=(Xi, Yi))
# 讀取結(jié)果
k, b = Para[0]
print('k=', k, 'b=', b)

# 畫樣本點
plt.figure(figsize=(8, 6))
plt.scatter(Xi, Yi, color='red', label='Sample data', linewidth=2)

# 畫擬合直線
x = np.linspace(150, 180, 80)
y = k * x + b

# 繪制擬合曲線
plt.plot(x, y, color='blue', label='Fitting Curve', linewidth=2)
plt.legend()  # 繪制圖例

plt.xlabel('Height:cm', fontproperties='simHei', fontsize=12)
plt.ylabel('Weight:Kg', fontproperties='simHei', fontsize=12)

plt.show()

在這里插入圖片描述

計算殘差

# 計算殘差
import numpy as np
import matplotlib.pyplot as plt
import scipy as sp
from scipy.optimize import leastsq
from statsmodels.graphics.api import qqplot

# 樣本數(shù)據(jù)
# 身高數(shù)據(jù)
Xi = np.array([162, 165, 159, 173, 157, 175, 161, 164, 172, 158])
# 體重數(shù)據(jù)
Yi = np.array([48, 64, 53, 66, 52, 68, 50, 52, 64, 49])

# 定義變量
xy_res=[]
# 定義計算殘差函數(shù)
def residual(x,y):
    res = y - (0.4211697*x-8.2883026)               # 計算殘差
    return res                                      # 返回殘差

# 循環(huán)讀取殘差
for d in range(0,len(Xi)):
    res = residual(Xi[d], Yi[d])
    xy_res.append(res)

print(xy_res)
# 計算殘差平方和,和越小表明擬合的情況越好
xy_res_pingfangsum = np.dot(xy_res,xy_res)
print(xy_res_pingfangsum)

# 如果數(shù)據(jù)擬合模型效果好,殘差應(yīng)該遵從正態(tài)分布(0,d*d),d表示殘差

# 畫樣本點
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111)           # 添加一個子圖
fig = qqplot(np.array(xy_res),line='q',ax=ax)  # 設(shè)置參數(shù)


plt.show()

在這里插入圖片描述

PS:其中的fig.add_subplot(111),

111代表的是畫布11的第一個區(qū)域。

222則代表22的第二個區(qū)域。

在這里插入圖片描述

以上就是python實現(xiàn)最小二乘法的方法詳解的詳細內(nèi)容,更多關(guān)于python最小二乘法的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python實現(xiàn)自動登錄人人網(wǎng)并采集信息的方法

    python實現(xiàn)自動登錄人人網(wǎng)并采集信息的方法

    這篇文章主要介紹了python實現(xiàn)自動登錄人人網(wǎng)并采集信息的方法,涉及Python模擬登陸及正則匹配的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • 利用python爬取散文網(wǎng)的文章實例教程

    利用python爬取散文網(wǎng)的文章實例教程

    這篇文章主要跟大家介紹了利用python爬取散文網(wǎng)文章的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • Python實現(xiàn)的矩陣類實例

    Python實現(xiàn)的矩陣類實例

    這篇文章主要介紹了Python實現(xiàn)的矩陣類,結(jié)合完整實例形式分析了Python矩陣的定義、計算、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • django admin 自定義替換change頁面模板的方法

    django admin 自定義替換change頁面模板的方法

    今天小編就為大家分享一篇django admin 自定義替換change頁面模板的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 解決pyttsx3無法封裝的問題

    解決pyttsx3無法封裝的問題

    今天小編就為大家分享一篇解決pyttsx3無法封裝的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 用python標(biāo)準(zhǔn)庫difflib比較兩份文件的異同詳解

    用python標(biāo)準(zhǔn)庫difflib比較兩份文件的異同詳解

    今天小編就為大家分享一篇用python標(biāo)準(zhǔn)庫difflib比較兩份文件的異同詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python中的shutil模塊詳析

    Python中的shutil模塊詳析

    這篇文章主要介紹了Python中的shutil模塊詳析,Python的Shutil模塊可以看做是OS模塊的補充,它提供了對文件(夾)復(fù)制,移動,刪除,壓縮和解壓縮的方法,下面本文會對shutil模塊的常用方法進行分類介紹,需要的朋友可以參考下
    2023-09-09
  • 淺談Python的方法解析順序(MRO)

    淺談Python的方法解析順序(MRO)

    這篇文章主要介紹了淺談Python的方法解析順序(MRO),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python MySQLdb 使用utf-8 編碼插入中文數(shù)據(jù)問題

    Python MySQLdb 使用utf-8 編碼插入中文數(shù)據(jù)問題

    這篇文章主要介紹了Python MySQLdb 使用utf-8 編碼插入中文數(shù)據(jù)問題,需要的朋友可以參考下
    2018-03-03
  • Python基礎(chǔ)之輸入,輸出與高階賦值詳解

    Python基礎(chǔ)之輸入,輸出與高階賦值詳解

    這篇文章主要為大家介紹了Python基礎(chǔ)之輸入,輸出與高階賦值,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11

最新評論

扶沟县| 吉安市| 敖汉旗| 勐海县| 安义县| 镇安县| 姜堰市| 乐昌市| 贡嘎县| 武清区| 赤峰市| 和龙市| 始兴县| 县级市| 石阡县| 鄂伦春自治旗| 无锡市| 启东市| 竹山县| 定南县| 临邑县| 枞阳县| 乌拉特中旗| 衡阳市| 星子县| 任丘市| 灵台县| 弥勒县| 通海县| 新蔡县| 偏关县| 丁青县| 仙游县| 屯留县| 万山特区| 舞钢市| 东阳市| 白银市| 莱芜市| 海城市| 上林县|