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

python機器學習邏輯回歸隨機梯度下降法

 更新時間:2021年11月13日 15:46:34   作者:RDSunday  
這篇文章主要為大家介紹了python機器學習邏輯回歸隨機梯度下降法的詳細講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步

寫在前面

隨機梯度下降法就在隨機梯度上。意思就是說當我們在初始點時想找到下一點的梯度,這個點是隨機的。全批量梯度下降是從一個點接著一點是有順序的,全部數(shù)據(jù)點都要求梯度且有順序。

全批量梯度下降雖然穩(wěn)定,但速度較慢;

SGD雖然快,但是不夠穩(wěn)定

隨機梯度下降法

隨機梯度下降法(Stochastic Gradient Decent,
SGD)是對全批量梯度下降法計算效率的改進算法。本質上來說,我們預期隨機梯度下降法得到的結果和全批量梯度下降法相接近;SGD的優(yōu)勢是更快地計算梯度。

代碼

'''
隨機梯度下降法(Stochastic Gradient Decent, SGD)
是對全批量梯度下降法計算效率的改進算法。本
質上來說,我們預期隨機梯度下降法得到的結果和全批量梯度下降法相接近;
SGD的優(yōu)勢是更快地計算梯度。
'''
import pandas as pd
import numpy as np
import os
os.getcwd()
# F:\\pythonProject3\\data\\data\\train.csv
# dataset_path = '..'
# 這是一個全批量梯度下降(full-batch gradient descent)的應用。
# 這個問題是一個回歸問題
# 我們給出美國某大型問答社區(qū)從2010年10月1日到2016年11月30日,
# 每天新增的問題的個數(shù)和回答的個數(shù)。
# 任務是預測2016年12月1日到2017年5月1日,該問答網站每天新增的問題數(shù)和回答數(shù)。
train = pd.read_csv('..\\train.csv')
# 導入數(shù)據(jù)
# train = pd.read_csv('train.csv')
test = pd.read_csv('..\\test.csv')
submit = pd.read_csv('..\\sample_submit.csv')
path1=os.path.abspath('.')
print("path1@@@@@",path1)
path2=os.path.abspath('..')
print("path2@@@@@",path2)
print(train)
# 初始設置
beta = [1,1] #初始點
alpha = 0.2 #學習率,也就是步長
tol_L = 0.1 #閾值,也就是精度
# 對x進行歸一化,train 是訓練數(shù)據(jù)的二維表格
max_x = max(train['id']) #max_x是總共的id數(shù)
x = train['id'] / max_x #所有的id都除于max_x
y = train['questions'] # train二維表格中的questions列賦給y
type(train['id'])
print("train['id']#######\n",train['id'])
print("type(train['id'])###\n\n",x)
print("max_x#######",max_x)
#為了計算方向
def compute_grad_SGD(beta, x, y):
    '''
    :param beta: 是初始點
    :param x: 是自變量
    :param y: 是真是值
    :return: 梯度數(shù)組
    '''
    grad = [0, 0]
    r = np.random.randint(0, len(x)) #在0-len(x)之間隨機生成一個數(shù)
    grad[0] = 2. * np.mean(beta[0] + beta[1] * x[r] - y[r]) #求beta[1,1],中第1個數(shù)的梯度
    grad[1] = 2. * np.mean(x * (beta[0] + beta[1] * x - y))#求beta[1,1],中第2個數(shù)的梯度
    return np.array(grad)
#為了計算下一個點在哪,
def update_beta(beta, alpha, grad):
    '''
    :param beta: 第一點,初始點
    :param alpha: 學習率,也就時步長
    :param grad: 梯度
    :return:
    '''
    new_beta = np.array(beta) - alpha * grad
    return new_beta
# 定義計算RMSE的函數(shù)
# 均方根誤差(RMSE)
def rmse(beta, x, y):
    squared_err = (beta[0] + beta[1] * x - y) ** 2 # beta[0] + beta[1] * x是預測值,y是真實值,
    res = np.sqrt(np.mean(squared_err))
    return res
# 進行第一次計算
grad = compute_grad_SGD(beta, x, y) #調用計算梯度函數(shù),計算梯度
loss = rmse(beta, x, y) #調用損失函數(shù),計算損失
beta = update_beta(beta, alpha, grad) #更新下一點
loss_new = rmse(beta, x, y) #調用損失函數(shù),計算下一個損失
# 開始迭代
i = 1
while np.abs(loss_new - loss) > tol_L:
    beta = update_beta(beta, alpha, grad)
    grad = compute_grad_SGD(beta, x, y)
    if i % 100 == 0:
        loss = loss_new
        loss_new = rmse(beta, x, y)
        print('Round %s Diff RMSE %s'%(i, abs(loss_new - loss)))
    i += 1
print('Coef: %s \nIntercept %s'%(beta[1], beta[0]))
res = rmse(beta, x, y)
print('Our RMSE: %s'%res)
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(train[['id']], train[['questions']])
print('Sklearn Coef: %s'%lr.coef_[0][0])
print('Sklearn Coef: %s'%lr.intercept_[0])
res = rmse([936.051219649, 2.19487084], train['id'], y)
print('Sklearn RMSE: %s'%res)

參考文獻

隨機梯度下降法

相關文章

  • python eventlet綠化和patch原理

    python eventlet綠化和patch原理

    這篇文章主要介紹了python eventlet綠化和patch原理,幫助大家更好的理解和學習python eventlet工具的使用,感興趣的朋友可以了解下
    2020-11-11
  • 如何使用python記錄室友的抖音在線時間

    如何使用python記錄室友的抖音在線時間

    這篇文章主要介紹了如何使用python記錄室友的抖音在線時間,本文通過實例代碼圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Python詳解如何動態(tài)給對象增加屬性和方法

    Python詳解如何動態(tài)給對象增加屬性和方法

    python是動態(tài)語?,動態(tài)編程語?是?級程序設計語?的?個類別,在計算機科學領域已被?泛應?。它是?類在?運?時可以改變其結構?的語??:例如新的函數(shù)、對象、甚?代碼可以被引進,已有的函數(shù)可以被刪除或是其他結構上的變化
    2022-07-07
  • Python File(文件) 方法整理

    Python File(文件) 方法整理

    在本篇文章中我們給大家整理了關于Python File(文件) 的用法以及相關知識點,有興趣的朋友們學習下。
    2019-02-02
  • Python實現(xiàn)括號匹配方法詳解

    Python實現(xiàn)括號匹配方法詳解

    這篇文章主要介紹了python實現(xiàn)括號匹配方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Python實現(xiàn)生成密碼字典的方法示例

    Python實現(xiàn)生成密碼字典的方法示例

    這篇文章主要介紹了Python實現(xiàn)生成密碼字典的方法,結合實例形式詳細分析了Python密碼字典的實現(xiàn)方法及相關操作注意事項,涉及字符串運算、文件讀寫等相關操作技巧,需要的朋友可以參考下
    2019-09-09
  • python實現(xiàn)石頭剪刀布小游戲

    python實現(xiàn)石頭剪刀布小游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)石頭剪刀布小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Python入門教程之pycharm安裝/基本操作/快捷鍵

    Python入門教程之pycharm安裝/基本操作/快捷鍵

    這篇文章主要介紹了Python入門教程之pycharm安裝/基本操作/快捷鍵,Python是一門非常強大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04
  • 單利模式及python實現(xiàn)方式詳解

    單利模式及python實現(xiàn)方式詳解

    單例模式(Singleton Pattern)是一種常用的軟件設計模式,該模式的主要目的是確保 某一個類只有一個實例存在.這篇文章主要介紹了單利模式及python實現(xiàn)方式及Python單例模式的4種實現(xiàn)方法,需要的朋友可以參考下
    2018-03-03
  • Python try except finally資源回收的實現(xiàn)

    Python try except finally資源回收的實現(xiàn)

    這篇文章主要介紹了Python try except finally資源回收的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01

最新評論

固始县| 九江县| 七台河市| 黄骅市| 中阳县| 天气| 固始县| 朝阳区| 铜梁县| 沛县| 诸暨市| 五河县| 宁夏| 红桥区| 顺昌县| 吉安县| 哈密市| 昌平区| 乐至县| 睢宁县| 重庆市| 探索| 华池县| 和静县| 个旧市| 怀宁县| 乾安县| 甘洛县| 华阴市| 丰都县| 东丽区| 云阳县| 巩留县| 濮阳市| 湘乡市| 酒泉市| 芮城县| 苗栗县| 商洛市| 泰州市| 福海县|