天天看點

手把手帶你學python—牛客網python 機器學習 使用梯度下降對邏輯回歸進行訓練

牛客是一款不論是面試 還是刷題 都是非常有用的 還等什麼,傳送門- ​​牛客網python基礎​​

🥇作者簡介:大家好我是 uu 給剛入門的python的小夥伴帶來一套python 完整的入門基礎。

🥈個人首頁:uu首頁

📑 推薦一款非常火的面試、刷題神器👉  ​​牛客網python基礎​​

覺得uu寫的不錯的話 麻煩動動小手 點贊👍 收藏⭐  評論📄

今天給大家帶來的刷題系列是:使用梯度下降對邏輯回歸進行訓練

手把手帶你學python—牛客網python 機器學習 使用梯度下降對邏輯回歸進行訓練

​​ 

手把手帶你學python—牛客網python 機器學習 使用梯度下降對邏輯回歸進行訓練

​ 

手把手帶你學python—牛客網python 機器學習 使用梯度下降對邏輯回歸進行訓練

題目介紹:

描述

邏輯回歸是機器學習領域中被廣泛使用的經典模型。了解和正确使用邏輯回歸對于機器學習的實際應用至關重要。邏輯回歸通常使用極大似然的思想建構損失函數,并且在此基礎上使用梯度下降進行求解。通過求解極大似然思想表示的邏輯回歸損失函數對于參數 θ的梯度,可以得到參數的更新公式為:,其中

,請根據上述給定的資訊完成接下來的代碼補全。

從目前路徑下讀取資料集dataSet.csv、labels.csv,使用梯度下降的思想訓練邏輯回歸模型進行訓練,需要實作 sigmoid 函數和 gradientDescent 函數。其中,sigmoid 函數隻需給出基本的數學實作,gradientDescent 函數的入參是訓練資料矩陣 dataMatIn 和 classLabels,其格式均為 np.matrix,matrix 中的特征有3 次元,是以傳回值為經過疊代以後的參數矩陣,要求格式為 np.matrix 格式,次元為 3 * 1,分别代表了每一維特征的權重。

其中dataSet.csv示例資料如下:

lables.csv示例資料集如下:

手把手帶你學python—牛客網python 機器學習 使用梯度下降對邏輯回歸進行訓練

解題思路: 

 使用 python 的包

import numpy as np

import pandas as pd

代碼解析:

​​import numpy as npimport pandas as pd
def generate_data():
    datasets = pd.read_csv('dataSet.csv', header=None).values.tolist()
    labels = pd.read_csv('labels.csv', header=None).values.tolist()
    return datasets, labels
def sigmoid(X):
    #補全 sigmoid 函數功能
    #code start here
    return 1.0 / (1 + np.exp(-X))
    #code end here
def gradientDescent(dataMatIn, classLabels):
    alpha = 0.001  # 學習率,也就是題目描述中的 α
    iteration_nums = 100  # 疊代次數,也就是for循環的次數
    dataMatrix = np.mat(dataMatIn) 
    labelMat = np.mat(classLabels).transpose() 
    m, n = np.shape(dataMatrix)  # 傳回dataMatrix的大小。m為行數,n為列數。
    weight_mat = np.ones((n, 1)) #初始化權重矩陣
    #iteration_nums 即為循環的疊代次數
    #請在代碼完善部分注意矩陣乘法的次元,使用梯度下降矢量化公式
    #code start here
    for i in range(iteration_nums):
        hx = sigmoid(dataMatrix * weight_mat)
        weight_mat = weight_mat - alpha * dataMatrix.transpose() * (hx  - labelMat)
    return weight_mat
    #code end here
if __name__ == '__main__':
    dataMat, labelMat = generate_data()
    print(gradientDescent(dataMat, labelMat))​​      
上一篇: 開始mxnet