当前位置: 首页 > article >正文

二元分类逻辑回归python代码实现

import numpy as np
from math import *


#sigmoid函数
def sigmoid(z):
    return 1/(1+exp(-z))

#计算代价的函数
def get_cost_logistic(X,y,w,b):
    m=X.shape[0]
    cost=0.0
    for i in range(m):
        z_i=np.dot(X[i],w)+b
        f_wb_i=sigmoid(z_i)
        cost+=-y[i]*np.log(f_wb_i)-(1-y[i])*np.log(1-f_wb_i)
    cost=cost/m
    return cost

#计算梯度的函数
def get_gradient(x,y,w,b):
   #获取数据量和特征数量
   m=x.shape[0]
   n=x.shape[1]
   dj_dw=np.zeros((n,))
   dj_db=0
   for i in range(m):
       error=sigmoid(np.dot(x[i,:],w)+b)-y[i]
       dj_db+=error
       for j in range(n):
           dj_dw[j]+=(error*x[i,j])
   dj_db=dj_db/m
   dj_dw=dj_dw/m
   return dj_dw,dj_db

#梯度下降函数
def gradient_descent(x,y,w_in,b_in,alpha,iters):
    w=w_in
    b=b_in
    cost_his=[]
    for i in range(iters):
        dj_dw,dj_db=get_gradient(x,y,w,b)
        w=w-dj_dw*alpha
        b=b-dj_db*alpha
        cost_his.append(get_cost_logistic(x,y,w,b))
        if (i)%(iters/10)==0:
            print(f'iteration:{i},cost:{cost_his[i]},w:{w},b:{b}')
    print(f'final w:{w},b:{b}')
    return w,b,cost_his



http://www.kler.cn/a/286268.html

相关文章:

  • 使用where子句筛选记录
  • pytorch基于FastText实现词嵌入
  • http和https的区别?
  • SSM开发(三) spring与mybatis整合(含完整运行demo源码)
  • 5.3.2 软件设计原则
  • 消息队列篇--通信协议篇--TCP和UDP(3次握手和4次挥手,与Socket和webSocket的概念区别等)
  • 【知识图谱】4、LLM大模型结合neo4j图数据库实现AI问答的功能
  • 【最全最详细】RPC与HTTP的区别
  • 信息学奥赛一本通:友好城市
  • 【bug记录6】css 写animation时,Safari浏览器最后一帧部分样式闪回
  • Adobe Acrobat Reader的高级功能详解
  • linux文件——用户缓冲区——概念深度探索、IO模拟实现
  • 【QNX+Android虚拟化方案】108 - emac0-phy 与 emac1-switch 双网卡兼容 方案实现
  • 【TiDB原理与实战详解】4、DM 迁移和TiCDC数据同步~学不会? 不存在的!
  • 推荐10个开源且实用的大模型
  • ComfyUI上手使用记录
  • 本地部署一个WordPress博客结合内网穿透实现异地远程访问本地站点
  • 【Mysql】面试官问Mybatis分页查询比较慢时你怎么优化?
  • 自然语言处理-词向量转换
  • ssrf进阶绕过思路与特殊玩法汇总
  • JavaWeb实战教程:如何一步步构建房产信息管理系统?MySQL助力数据管理
  • 深度学习基础—彩色图片的卷积运算
  • Flask-RESTFul 之 RESTFul 的第一个案例
  • Graylog配置用户权限以及常用搜索语法
  • k8s-pod 实战一 (创建pod,启动命令,参数,pod故障排除,拉取命令)
  • [易聊]软件项目测试报告