欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 還原梯度下降算法實(shí)現(xiàn)一維線性回歸

 更新時(shí)間:2020年10月22日 09:18:46   作者:Mchael菜鳥(niǎo)  
這篇文章主要介紹了python 還原梯度下降算法實(shí)現(xiàn)一維線性回歸,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

首先我們看公式:

在這里插入圖片描述

這個(gè)是要擬合的函數(shù)

然后我們求出它的損失函數(shù), 注意:這里的n和m均為數(shù)據(jù)集的長(zhǎng)度,寫(xiě)的時(shí)候忘了

在這里插入圖片描述

注意,前面的theta0-theta1x是實(shí)際值,后面的y是期望值
接著我們求出損失函數(shù)的偏導(dǎo)數(shù):

在這里插入圖片描述

最終,梯度下降的算法:

在這里插入圖片描述

學(xué)習(xí)率一般小于1,當(dāng)損失函數(shù)是0時(shí),我們輸出theta0和theta1.
接下來(lái)上代碼!

class LinearRegression():

  def __init__(self, data, theta0, theta1, learning_rate):
    self.data = data
    self.theta0 = theta0
    self.theta1 = theta1
    self.learning_rate = learning_rate
    self.length = len(data)

  # hypothesis
  def h_theta(self, x):
    return self.theta0 + self.theta1 * x

  # cost function
  def J(self):
    temp = 0
    for i in range(self.length):
      temp += pow(self.h_theta(self.data[i][0]) - self.data[i][1], 2)
    return 1 / (2 * self.m) * temp

  # partial derivative
  def pd_theta0_J(self):
    temp = 0
    for i in range(self.length):
      temp += self.h_theta(self.data[i][0]) - self.data[i][1]
    return 1 / self.m * temp

  def pd_theta1_J(self):
    temp = 0
    for i in range(self.length):
      temp += (self.h_theta(data[i][0]) - self.data[i][1]) * self.data[i][0]
    return 1 / self.m * temp

  # gradient descent
  def gd(self):
    min_cost = 0.00001
    round = 1
    max_round = 10000
    while min_cost < abs(self.J()) and round <= max_round:
      self.theta0 = self.theta0 - self.learning_rate * self.pd_theta0_J()
      self.theta1 = self.theta1 - self.learning_rate * self.pd_theta1_J()

      print('round', round, ':\t theta0=%.16f' % self.theta0, '\t theta1=%.16f' % self.theta1)
      round += 1
    return self.theta0, self.theta1

def main():
	data = [[1, 2], [2, 5], [4, 8], [5, 9], [8, 15]] # 這里換成你想擬合的數(shù)[x, y]
	 # plot scatter
  x = []
  y = []
  for i in range(len(data)):
    x.append(data[i][0])
    y.append(data[i][1])
  plt.scatter(x, y)

  # gradient descent
  linear_regression = LinearRegression(data, theta0, theta1, learning_rate)
  theta0, theta1 = linear_regression.gd()

  # plot returned linear
  x = np.arange(0, 10, 0.01)
  y = theta0 + theta1 * x
  plt.plot(x, y)
  plt.show()

到此這篇關(guān)于python 還原梯度下降算法實(shí)現(xiàn)一維線性回歸 的文章就介紹到這了,更多相關(guān)python 一維線性回歸 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pip matplotlib報(bào)錯(cuò)equired packages can not be built解決

    pip matplotlib報(bào)錯(cuò)equired packages can not be built解決

    這篇文章主要介紹了pip matplotlib報(bào)錯(cuò)equired packages can not be built解決,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Python常用驗(yàn)證碼標(biāo)注和識(shí)別(需求分析和實(shí)現(xiàn)思路)

    Python常用驗(yàn)證碼標(biāo)注和識(shí)別(需求分析和實(shí)現(xiàn)思路)

    通過(guò)本文的介紹,我們了解了Python在常用驗(yàn)證碼標(biāo)注和識(shí)別方面的應(yīng)用,在實(shí)際項(xiàng)目中,我們可以根據(jù)具體需求選擇合適的模型和工具,實(shí)現(xiàn)高效、準(zhǔn)確的驗(yàn)證碼標(biāo)注和識(shí)別,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • 淺析Python條件語(yǔ)句中的解密邏輯與控制流

    淺析Python條件語(yǔ)句中的解密邏輯與控制流

    這篇文章主要想來(lái)和大家一起探索一下Python條件語(yǔ)句的奇妙世界——解密邏輯與控制流,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下
    2023-07-07
  • Python調(diào)用各大機(jī)器翻譯API的實(shí)現(xiàn)示例

    Python調(diào)用各大機(jī)器翻譯API的實(shí)現(xiàn)示例

    本文主要介紹了Python調(diào)用各大機(jī)器翻譯API的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • python把數(shù)組中的數(shù)字每行打印3個(gè)并保存在文檔中的方法

    python把數(shù)組中的數(shù)字每行打印3個(gè)并保存在文檔中的方法

    今天小編就為大家分享一篇python把數(shù)組中的數(shù)字每行打印3個(gè)并保存在文檔中的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python三十行代碼實(shí)現(xiàn)簡(jiǎn)單人臉識(shí)別的示例代碼

    Python三十行代碼實(shí)現(xiàn)簡(jiǎn)單人臉識(shí)別的示例代碼

    這篇文章主要介紹了Python三十行代碼實(shí)現(xiàn)簡(jiǎn)單人臉識(shí)別的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Flask學(xué)習(xí)之全局異常處理詳解

    Flask學(xué)習(xí)之全局異常處理詳解

    Flask是一個(gè)基于Python的Web框架,它提供了全局異常處理的機(jī)制來(lái)捕獲和處理應(yīng)用程序中的異常,下面就帶大家深入了解一下Flask是如何實(shí)現(xiàn)異常處理的,希望對(duì)大家有所幫助
    2023-06-06
  • 在交互式環(huán)境中執(zhí)行Python程序過(guò)程詳解

    在交互式環(huán)境中執(zhí)行Python程序過(guò)程詳解

    這篇文章主要介紹了在交互式環(huán)境中執(zhí)行Python程序過(guò)程詳解,運(yùn)行Python腳本程序的方式有多種,目前主要的方式有:交互式環(huán)境運(yùn)行、命令行窗口運(yùn)行、開(kāi)發(fā)工具上運(yùn)行等,其中在不同的操作平臺(tái)上還互不相同,需要的朋友可以參考下
    2019-07-07
  • Python數(shù)組并集交集補(bǔ)集代碼實(shí)例

    Python數(shù)組并集交集補(bǔ)集代碼實(shí)例

    這篇文章主要介紹了Python數(shù)組并集交集補(bǔ)集代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • pyecharts如何旋轉(zhuǎn)折線圖的X軸標(biāo)簽

    pyecharts如何旋轉(zhuǎn)折線圖的X軸標(biāo)簽

    這篇文章主要介紹了pyecharts如何旋轉(zhuǎn)折線圖的X軸標(biāo)簽,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評(píng)論