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

Python機(jī)器學(xué)習(xí)之隨機(jī)梯度下降法的實(shí)現(xiàn)

 更新時(shí)間:2023年02月27日 09:25:59   作者:街 三 仔  
如果當(dāng)我們數(shù)據(jù)量和樣本量非常大時(shí),每一項(xiàng)都要參與到梯度下降,那么它的計(jì)算量時(shí)非常大的,所以我們需要采用隨機(jī)梯度下降法。本文介紹了Python實(shí)現(xiàn)隨機(jī)梯度下降法的方法,希望對(duì)大家有所幫助

隨機(jī)梯度下降法

為什么使用隨機(jī)梯度下降法?

如果當(dāng)我們數(shù)據(jù)量和樣本量非常大時(shí),每一項(xiàng)都要參與到梯度下降,那么它的計(jì)算量時(shí)非常大的,所以我們可以采用隨機(jī)梯度下降法。

隨機(jī)梯度下降法中的學(xué)習(xí)率必須是隨著循環(huán)的次數(shù)增加而遞減的。如果eta取一樣的話有可能在非常接近我們的最優(yōu)值時(shí)會(huì)跳過(guò),所以隨著迭代次數(shù)的增加,學(xué)習(xí)率eta要隨之減小,我們可以用模擬退火的思想實(shí)現(xiàn)(如下圖所示),t0和t1是一個(gè)常數(shù),定值,其通常是根據(jù)經(jīng)驗(yàn)取得一些值。

隨機(jī)梯度下降法的實(shí)現(xiàn)

隨機(jī)梯度下降法的公式如下圖所示,其中挑出一個(gè)樣本出來(lái)計(jì)算。

先創(chuàng)建x,y,以下取10000個(gè)樣本

import numpy as np

m = 10000

x = np.random.random(size=m)
y = x*3 + 4 + np.random.normal(size=m)

寫(xiě)入函數(shù)

def dj_sgd(theta, x_i, y_i): # 傳入一個(gè)樣本,獲取對(duì)應(yīng)的梯度
    return x_i.T.dot(x_i.dot(theta)-y_i)*2 # MSE

def sgd(X_b, y, initial_theta, n_iters): # 求出整個(gè)theta的函數(shù)
    def learning_rate(i_iter):
        t0 = 5
        t1 = 50
        return t0/(i_iter+t1)
    theta = initial_theta
    i_iter = 1
    
    while i_iter <= n_iters:
        index = np.random.randint(0, len(X_b))
        x_i = X_b[index]
        y_i = y[index]
        gradient = dj_sgd(theta, x_i, y_i) # 求導(dǎo)數(shù)
        theta = theta - gradient*learning_rate(i_iter) # 求步長(zhǎng)
        i_iter += 1
    return theta

調(diào)用函數(shù),求出截距和系數(shù)

以上隨機(jī)梯度的缺點(diǎn)是不能照顧到每一點(diǎn),因此需要進(jìn)行改進(jìn)。

以下對(duì)其中的函數(shù)進(jìn)行修改。

def dj_sgd(theta, x_i, y_i): # 傳入一個(gè)樣本,獲取對(duì)應(yīng)的梯度
    return x_i.T.dot(x_i.dot(theta)-y_i)*2 # MSE

def sgd(X_b, y, initial_theta, n_iters): # 求出整個(gè)theta的函數(shù)
    def learning_rate(i_iter):
        t0 = 5
        t1 = 50
        return t0/(i_iter+t1)
    theta = initial_theta
    m = len(X_b)
    
    for cur_iter in range(n_iters): # 每一次循環(huán)都把樣本打亂,n_iters的代表整個(gè)樣本看幾輪
        random_indexs = np.random.permutation(m)
        X_random = X_b[random_indexs]
        y_random = y[random_indexs]
        for i in range(m):
            theta = theta - learning_rate(cur_iter*m+i) * (dj_sgd(theta, X_random[i], y_random[i]))
        return theta

與前邊運(yùn)算結(jié)果進(jìn)行對(duì)比,其耗時(shí)更長(zhǎng)。

到此這篇關(guān)于Python機(jī)器學(xué)習(xí)之隨機(jī)梯度下降法的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python隨機(jī)梯度下降法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 新手入門(mén)Python編程的8個(gè)實(shí)用建議

    新手入門(mén)Python編程的8個(gè)實(shí)用建議

    這篇文章主要介紹了Python編程的8個(gè)實(shí)用建議,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python3中類的繼承以及self和super的區(qū)別詳解

    python3中類的繼承以及self和super的區(qū)別詳解

    今天小編就為大家分享一篇python3中類的繼承以及self和super的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • python庫(kù)fire使用教程

    python庫(kù)fire使用教程

    本文主要介紹了python庫(kù)fire使用教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Python下載的11種姿勢(shì)(小結(jié))

    Python下載的11種姿勢(shì)(小結(jié))

    這篇文章主要介紹了Python下載的11種姿勢(shì)(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python中matplotlib中文亂碼解決辦法

    Python中matplotlib中文亂碼解決辦法

    Matplotlib是Python的一個(gè)很好的繪圖包,但是其本身并不支持中文(貌似其默認(rèn)配置中沒(méi)有中文字體),所以如果繪圖中出現(xiàn)了中文,就會(huì)出現(xiàn)亂碼
    2017-05-05
  • Python實(shí)現(xiàn)讀取mat、tif和hdr格式數(shù)據(jù)

    Python實(shí)現(xiàn)讀取mat、tif和hdr格式數(shù)據(jù)

    遙感影像數(shù)據(jù)大多以tif格式或者以hdr格式進(jìn)行存儲(chǔ),如果以mat格式進(jìn)行存儲(chǔ),不會(huì)保留坐標(biāo)信息,本文將詳細(xì)介紹如何使用python來(lái)讀取這三種格式的數(shù)據(jù),需要的可以參考下
    2023-12-12
  • Pycharm中python調(diào)用另一個(gè)文件類或者函數(shù)

    Pycharm中python調(diào)用另一個(gè)文件類或者函數(shù)

    本文主要介紹了Pycharm中python調(diào)用另一個(gè)文件類或者函數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 在Mac下使用python實(shí)現(xiàn)簡(jiǎn)單的目錄樹(shù)展示方法

    在Mac下使用python實(shí)現(xiàn)簡(jiǎn)單的目錄樹(shù)展示方法

    今天小編就為大家分享一篇在Mac下使用python實(shí)現(xiàn)簡(jiǎn)單的目錄樹(shù)展示方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • python如何定義一個(gè)迭代器去生成偶數(shù)數(shù)列

    python如何定義一個(gè)迭代器去生成偶數(shù)數(shù)列

    這篇文章主要介紹了python如何定義一個(gè)迭代器去生成偶數(shù)數(shù)列問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 基于python select.select模塊通信的實(shí)例講解

    基于python select.select模塊通信的實(shí)例講解

    下面小編就為大家?guī)?lái)一篇基于python select.select模塊通信的實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09

最新評(píng)論

巨野县| 巴林右旗| 会昌县| 昌邑市| 左权县| 北海市| 五大连池市| 长泰县| 阜平县| 沙雅县| 尼玛县| 锡林郭勒盟| 阜城县| 定远县| 兴安盟| 五寨县| 新田县| 麻阳| 象州县| 开江县| 玛曲县| 云梦县| 盘锦市| 壶关县| 民和| 内黄县| 乐东| 金沙县| 资中县| 桦川县| 托里县| 江都市| 寿光市| 临湘市| 万荣县| 庄河市| 泗阳县| 兴隆县| 湾仔区| 五常市| 肇州县|