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

python簡單批量梯度下降代碼

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

簡單批量梯度下降代碼

其中涉及到公式

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

在這里插入圖片描述

注意1/m前正負號的改變

在這里插入圖片描述

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

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
#樣本的個數(shù) ,在梯度下降公式中有x
m = len(x)
#設(shè)置停止條件,即梯度下降到滿足實驗要求時即可停止。
# 方案1:設(shè)置迭代次數(shù),如迭代5000次后停止。
#(此處為2)方案2:設(shè)置epsilon,計算mse(均方誤差,線性回歸指標之一)的誤差,如果mse的誤差《= epsilon,即停止
#在更改epsilon的次數(shù)后,越小,迭代次數(shù)會越多,結(jié)果更加準確。
epsilon = 0.00000001
#設(shè)置誤差
error0,error1 = 0,0
#計算迭代次數(shù)
cnt = 0
def h_theta_x(x):
    return theta0+theta1*x
#接下來開始各種迭代
#"""用while 迭代"""
while True:
    cnt+=1
    diff=[0,0]
    #該處為梯度,設(shè)置了兩個梯度后再進行迭代,梯度每次都會清零后再進行迭代
    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))
    #計算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é)果更加準確。
在線性模型的代碼(代碼可參見另一條文章)中,得到運算結(jié)果a,b的值,與梯度下降后得到的結(jié)果theta0和theta1相近。增加實驗次數(shù)(如修改epsilon的次數(shù))可以得到更為相近的結(jié)果。

運行完畢后發(fā)現(xià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])
#改寫成向量形式
#運用random隨機生成100個樣本


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ù),避免學習時間過長
n_iterations = 10000
#樣本格數(shù)
m = 100
#初始化thata, w0...wn,初始化兩個2*1 的隨機數(shù)
theta = np.random.randn(2, 1)

#不會設(shè)置閾值,直接設(shè)置超參數(shù),迭代次數(shù),迭代次數(shù)到了,我們就認為收斂了。先看結(jié)果,如果結(jié)果不好就去調(diào)參
for _ in range(n_iterations):
    #接著求梯度gradient,這兒的梯度是n個梯度。即x* (h_theta - y)
    #會得到一次迭代的n個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 , 是一個向量
    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ā)送郵件的幾種方法,幫助大家更好的理解和學習Python,感興趣的朋友可以了解下
    2020-08-08
  • 在Django中同時使用多個配置文件的方法

    在Django中同時使用多個配置文件的方法

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

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

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

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

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

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

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

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

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

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

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

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

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

    推薦11個實用Python庫

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

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

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

最新評論

曲水县| 望城县| 信宜市| 克什克腾旗| 韩城市| 韩城市| 洪泽县| 确山县| 高淳县| 南雄市| 车致| 理塘县| 大田县| 肥乡县| 德兴市| 贺兰县| 黄骅市| 东阳市| 巴彦淖尔市| 顺昌县| 垦利县| 桑日县| 洛隆县| 泾阳县| 镇远县| 萨嘎县| 韶山市| 双鸭山市| 宁陵县| 利辛县| 库车县| 饶平县| 长宁区| 洱源县| 治县。| 涿州市| 太康县| 荃湾区| 岗巴县| 洱源县| 金平|