• 手把手带你学python—牛客网python 机器学习 使用梯度下降对逻辑回归进行训练


    牛客是一款不论是面试 还是刷题 都是非常有用的 还等什么,传送门- 牛客网python基础

    🥇作者简介:大家好我是 uu 给刚入门的python的小伙伴带来一套python 完整的入门基础。

    🥈个人主页:uu主页

    📑 推荐一款非常火的面试、刷题神器👉  牛客网python基础

    觉得uu写的不错的话 麻烦动动小手 点赞👍 收藏⭐  评论📄

    今天给大家带来的刷题系列是:使用梯度下降对逻辑回归进行训练

                                 ​​ 

    ​ 

    题目介绍:

    描述

    逻辑回归是机器学习领域中被广泛使用的经典模型。理解和正确使用逻辑回归对于机器学习的实际应用至关重要。逻辑回归通常使用极大似然的思想构建损失函数,并且在此基础上使用梯度下降进行求解。通过求解极大似然思想表示的逻辑回归损失函数对于参数 θ的梯度,可以得到参数的更新公式为:,其中

    ,请根据上述给定的信息完成接下来的代码补全。

    从当前路径下读取数据集dataSet.csv、labels.csv,使用梯度下降的思想训练逻辑回归模型进行训练,需要实现 sigmoid 函数和 gradientDescent 函数。其中,sigmoid 函数只需给出基本的数学实现,gradientDescent 函数的入参是训练数据矩阵 dataMatIn 和 classLabels,其格式均为 np.matrix,matrix 中的特征有3 维度,因此返回值为经过迭代以后的参数矩阵,要求格式为 np.matrix 格式,维度为 3 * 1,分别代表了每一维特征的权重。

    其中dataSet.csv示例数据如下:

    lables.csv示例数据集如下:

     

     

    解题思路: 

     使用 python 的包

    import numpy as np
    import pandas as pd

    代码解析:

    1. import numpy as np
    2. import pandas as pd
    3. def generate_data():
    4. datasets = pd.read_csv('dataSet.csv', header=None).values.tolist()
    5. labels = pd.read_csv('labels.csv', header=None).values.tolist()
    6. return datasets, labels
    7. def sigmoid(X):
    8. #补全 sigmoid 函数功能
    9. #code start here
    10. return 1.0 / (1 + np.exp(-X))
    11. #code end here
    12. def gradientDescent(dataMatIn, classLabels):
    13. alpha = 0.001 # 学习率,也就是题目描述中的 α
    14. iteration_nums = 100 # 迭代次数,也就是for循环的次数
    15. dataMatrix = np.mat(dataMatIn)
    16. labelMat = np.mat(classLabels).transpose()
    17. m, n = np.shape(dataMatrix) # 返回dataMatrix的大小。m为行数,n为列数。
    18. weight_mat = np.ones((n, 1)) #初始化权重矩阵
    19. #iteration_nums 即为循环的迭代次数
    20. #请在代码完善部分注意矩阵乘法的维度,使用梯度下降矢量化公式
    21. #code start here
    22. for i in range(iteration_nums):
    23. hx = sigmoid(dataMatrix * weight_mat)
    24. weight_mat = weight_mat - alpha * dataMatrix.transpose() * (hx - labelMat)
    25. return weight_mat
    26. #code end here
    27. if __name__ == '__main__':
    28. dataMat, labelMat = generate_data()
    29. print(gradientDescent(dataMat, labelMat))

     

    牛客是一款不论是面试 还是刷题 都是非常有用的 还等什么,传送门- 牛客网python基础  

  • 相关阅读:
    MessageQueue和Looper学习
    Linux下配置C语言编程环境
    5G之ULCL
    操作系统(linux0.11)的启动
    MySQL系列索引专题
    前端入门学习笔记四十五
    Xgboost系列-XGB实际参数调优指南附源码
    centos7下 编译coreboot生成真机可用的bios固件, 并在真机上演示 (上篇)
    SpringBoot配置第三方专业缓存技术jetcache远程缓存方案和本地缓存方案
    Android EventBus 事件订阅/发布框架
  • 原文地址:https://blog.csdn.net/qq_38735017/article/details/126673164