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

python簡單批量梯度下降代碼

 更新時(shí)間:2022年01月10日 08:40:42   作者:這里是阿丁  
大家好,本篇文章主要講的是python簡單批量梯度下降代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

簡單批量梯度下降代碼

其中涉及到公式

alpha表示超參數(shù),由外部設(shè)定。過大則會出現(xiàn)震蕩現(xiàn)象,過小則會出現(xiàn)學(xué)習(xí)速度變慢情況,因此alpha應(yīng)該不斷的調(diào)整改進(jìn)。

在這里插入圖片描述

注意1/m前正負(fù)號的改變

在這里插入圖片描述

Xj的意義為j個(gè)維度的樣本。
下面為代碼部分

import numpy as np
#該處數(shù)據(jù)和linear_model中數(shù)據(jù)相同
x = np.array([4,8,5,10,12])
y = np.array([20,50,30,70,60])

#一元線性回歸 即 h_theta(x)=  y= theta0 +theta1*x
#初始化系數(shù),最開始要先初始化theta0 和theta1
theta0,theta1 = 0,0
#最開始梯度下降法中也有alpha 為超參數(shù),提前初始化為0.01
alpha = 0.01
#樣本的個(gè)數(shù) ,在梯度下降公式中有x
m = len(x)
#設(shè)置停止條件,即梯度下降到滿足實(shí)驗(yàn)要求時(shí)即可停止。
# 方案1:設(shè)置迭代次數(shù),如迭代5000次后停止。
#(此處為2)方案2:設(shè)置epsilon,計(jì)算mse(均方誤差,線性回歸指標(biāo)之一)的誤差,如果mse的誤差《= epsilon,即停止
#在更改epsilon的次數(shù)后,越小,迭代次數(shù)會越多,結(jié)果更加準(zhǔn)確。
epsilon = 0.00000001
#設(shè)置誤差
error0,error1 = 0,0
#計(jì)算迭代次數(shù)
cnt = 0
def h_theta_x(x):
    return theta0+theta1*x
#接下來開始各種迭代
#"""用while 迭代"""
while True:
    cnt+=1
    diff=[0,0]
    #該處為梯度,設(shè)置了兩個(gè)梯度后再進(jìn)行迭代,梯度每次都會清零后再進(jìn)行迭代
    for i in range(m):
        diff[0]+=(y[i]-h_theta_x(x[i]))*1
        diff[1]+=(y[i]-h_theta_x(x[i]))*x[i]
    theta0 = theta0 + alpha * diff[0] / m
    theta1 = theta1 + alpha * diff[1] / m
    #輸出theta值
    # ”%s“表示輸出的是輸出字符串。格式化
    print("theta0:%s,theta1:%s"%(theta0,theta1))
    #計(jì)算mse
    for i in range(m):
        error1 +=(y[i]-h_theta_x(x[i]))**2
    error1/=m
    if(abs(error1-error0)<=epsilon):
        break
    else:
        error0 = error1
print("迭代次數(shù):%s"%cnt)

#線性回歸結(jié)果:5.714285714285713     1.4285714285714448      87.14285714285714
#批量梯度下降結(jié)果:theta0:1.4236238440026219,theta1:5.71483960227916   迭代次數(shù):3988
#在更改epsilon的次數(shù)后,越小,迭代次數(shù)會越多,結(jié)果更加準(zhǔn)確。
在線性模型的代碼(代碼可參見另一條文章)中,得到運(yùn)算結(jié)果a,b的值,與梯度下降后得到的結(jié)果theta0和theta1相近。增加實(shí)驗(yàn)次數(shù)(如修改epsilon的次數(shù))可以得到更為相近的結(jié)果。

運(yùn)行完畢后發(fā)現(xiàn)其實(shí)該處理方式并不理想
因?yàn)樘荻认陆甸_始后,theta數(shù)量會增加,即變量也會增加。每次增加都需要重新編寫其中的循環(huán)和函數(shù)。
因此可以將他們編寫成向量的形式

import numpy as np
#X_b = np.array([[1,4],[1,8],[1,5],[1,10],[1,12]])
#y = np.array([20,50,30,70,60])
#改寫成向量形式
#運(yùn)用random隨機(jī)生成100個(gè)樣本


np.random.seed(1)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.rand(100, 1)
X_b = np.c_[np.ones((100, 1)), X]
#print(X_b)
#此處的learning_rate 就是alpha
learning_rate = 0.01
#設(shè)置最大迭代次數(shù),避免學(xué)習(xí)時(shí)間過長
n_iterations = 10000
#樣本格數(shù)
m = 100
#初始化thata, w0...wn,初始化兩個(gè)2*1 的隨機(jī)數(shù)
theta = np.random.randn(2, 1)

#不會設(shè)置閾值,直接設(shè)置超參數(shù),迭代次數(shù),迭代次數(shù)到了,我們就認(rèn)為收斂了。先看結(jié)果,如果結(jié)果不好就去調(diào)參
for _ in range(n_iterations):
    #接著求梯度gradient,這兒的梯度是n個(gè)梯度。即x* (h_theta - y)
    #會得到一次迭代的n個(gè)theta值
    gradients = 1/m * X_b.T.dot(X_b.dot(theta)-y)
    #應(yīng)用公式調(diào)整theta的值,theta_t + 1 = theta_t - grad * learning_rate , 是一個(gè)向量
    theta = theta - learning_rate * gradients
print(theta)

到此這篇關(guān)于python簡單批量梯度下降代碼的文章就介紹到這了,更多相關(guān)python梯度下降內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 發(fā)送郵件方法總結(jié)

    Python 發(fā)送郵件方法總結(jié)

    這篇文章主要介紹了Python 發(fā)送郵件的幾種方法,幫助大家更好的理解和學(xué)習(xí)Python,感興趣的朋友可以了解下
    2020-08-08
  • 在Django中同時(shí)使用多個(gè)配置文件的方法

    在Django中同時(shí)使用多個(gè)配置文件的方法

    這篇文章主要介紹了在Django中同時(shí)使用多個(gè)配置文件的方法,Django是豐富多彩的Python web框架中人氣最高的一個(gè),需要的朋友可以參考下
    2015-07-07
  • Python實(shí)現(xiàn)爬取馬云的微博功能示例

    Python實(shí)現(xiàn)爬取馬云的微博功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)爬取馬云的微博功能,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python模擬ajax請求爬取馬云微博的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2019-02-02
  • 關(guān)于python爬蟲模塊urllib庫詳解

    關(guān)于python爬蟲模塊urllib庫詳解

    這篇文章主要介紹了關(guān)于python爬蟲模塊urllib庫詳解,學(xué)習(xí)爬蟲,最初的操作便是模擬瀏覽器向服務(wù)端發(fā)出請求,這里我們就學(xué)習(xí)使用urlib庫的用法,需要的朋友可以參考下
    2023-07-07
  • python同義詞替換的實(shí)現(xiàn)(jieba分詞)

    python同義詞替換的實(shí)現(xiàn)(jieba分詞)

    這篇文章主要介紹了python同義詞替換的實(shí)現(xiàn)(jieba分詞),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • python實(shí)現(xiàn)彩票系統(tǒng)

    python實(shí)現(xiàn)彩票系統(tǒng)

    這篇文章主要介紹了python實(shí)現(xiàn)彩票系統(tǒng),主要采用面向?qū)ο蟮姆椒?,信息存儲方式采用pickle模塊來進(jìn)行存儲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • python實(shí)現(xiàn)excel公式格式化的示例代碼

    python實(shí)現(xiàn)excel公式格式化的示例代碼

    這篇文章主要介紹了python實(shí)現(xiàn)excel公式格式化的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python實(shí)現(xiàn)刪除排序數(shù)組中重復(fù)項(xiàng)的兩種方法示例

    Python實(shí)現(xiàn)刪除排序數(shù)組中重復(fù)項(xiàng)的兩種方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)刪除排序數(shù)組中重復(fù)項(xiàng)的兩種方法,涉及Python數(shù)組元素的遍歷、判斷、刪除等相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • 推薦11個(gè)實(shí)用Python庫

    推薦11個(gè)實(shí)用Python庫

    這篇文章主要推薦了11個(gè)實(shí)用Python庫,都有這不錯(cuò)的群眾基礎(chǔ),非常好用,也都很實(shí)用,推薦給大家。
    2015-01-01
  • Python中常見的內(nèi)置函數(shù)使用講解

    Python中常見的內(nèi)置函數(shù)使用講解

    Python作為一種強(qiáng)大的編程語言,提供了豐富的內(nèi)置函數(shù),用于各種常見操作,本文將詳細(xì)介紹Python中常見的內(nèi)置函數(shù)的用法,需要的可以參考下
    2023-08-08

最新評論

南靖县| 崇文区| 新沂市| 徐汇区| 石泉县| 阿尔山市| 梅州市| 宿松县| 建平县| 望城县| 新乐市| 余姚市| 平乐县| 开平市| 白河县| 康平县| 姜堰市| 民权县| 息烽县| 泌阳县| 县级市| 拉萨市| 安西县| 蓬安县| 新营市| 乌鲁木齐县| 启东市| 高碑店市| 长乐市| 如东县| 都安| 抚州市| 鄂温| 宜良县| 辽阳县| 射洪县| 腾冲县| 乐平市| 策勒县| 浙江省| 习水县|