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

【python手写算法】逻辑回归实现分类(含公式推导)

公式推导:
请添加图片描述
代码实现:

# coding=utf-8
import matplotlib.pyplot as plt
import numpy as npdef f(w1,x1,w2,x2,b):z=w1*x1+w2*x2+breturn 1/(1+np.exp(-z))
if __name__ == '__main__':X1 =[12.46, 0.25, 5.22, 11.3, 6.81, 4.59, 0.66, 14.53, 15.49, 14.43,2.19, 1.35, 10.02, 12.93, 5.93, 2.92, 12.81, 4.88, 13.11, 5.8,29.01, 4.7, 22.33, 24.99, 18.85, 14.89, 10.58, 36.84, 42.36, 39.73,11.92, 7.45, 22.9, 36.62, 16.04, 16.56, 31.55, 20.04, 35.26, 23.59]X2 =[29.01, 4.7, 22.33, 24.99, 18.85, 14.89, 10.58, 36.84, 42.36, 39.73,11.92, 7.45, 22.9, 36.62, 16.04, 16.56, 31.55, 20.04, 35.26, 23.59,12.46, 0.25, 5.22, 11.3, 6.81, 4.59, 0.66, 14.53, 15.49, 14.43,2.19, 1.35, 10.02, 12.93, 5.93, 2.92, 12.81, 4.88, 13.11, 5.8]Y= []for i in range(len(X1)):if X1[i]+X2[i]<20:Y.append(0)else:Y.append(1);w1=1w2=-1b=2a=5 # 学习率w1_temp=-100w2_temp = -100b_temp=-100w1change = 100w2change = 100bchange = 100while abs(w1change)>1e-6 and abs(w2change)>1e-6 and abs(bchange)>1e-6:print(w1change)w1change=0w2change=0bchange=0for i in range(len(X1)):w1change+=(f(w1,X1[i],w2,X2[i],b)-Y[i])*X1[i]w2change += (f(w1,X1[i],w2,X2[i],b) - Y[i]) * X2[i]bchange+=(f(w1,X1[i],w2,X2[i],b) - Y[i])w1change/=len(X1)w2change /= len(X2)bchange /= len(X1)w1_temp=w1-a*w1changew2_temp = w2 - a * w2changeb_temp=b-a*bchangew1=w1_tempw2 = w2_tempb=b_tempprint("y=%.4f*x1+%.4f*x2+%.4f" % (w1,w2, b))X1_1 = []X1_2 = []X2_1 = []X2_2 = []for i in range(len(X1)):if(Y[i]==0):X1_1.append(X1[i])X2_1.append(X2[i])else:X1_2.append(X1[i])X2_2.append(X2[i])print(X1_1)# 简单画图显示plt.scatter(X1_1, X2_1, c="blue")plt.scatter(X1_2, X2_2, c="red")x = np.linspace(0, 40, 200)  # 在0到50之间生成100个等间距的值y=(w1*x+b)/(-w2)plt.plot(x,y)plt.show()

在这里插入图片描述
效果还不错,我感觉逻辑回归的最佳学习率要比线性回归最佳学习率大多了。

http://www.lryc.cn/news/158315.html

相关文章:

  • 【2023高教社杯数学建模国赛】ABCD题 问题分析、模型建立、参考文献及实现代码
  • yum安装mysql5.7散记
  • DNS解析
  • 从jdk8 升级到jdk17的问题总结
  • 一百七十二、Flume——Flume采集Kafka数据写入HDFS中(亲测有效、附截图)
  • pnpm 升级
  • 有关使用HttpServletRequest的Cookie的设置和获取
  • 关于 Nginx 的哪些事
  • 插入排序——希尔排序
  • C语言之初阶总结篇
  • Android签名查看
  • Educational Codeforces Round 3
  • Docker Compose常用命令
  • C++——智能指针
  • CVE-2023-3836:大华智慧园区综合管理平台任意文件上传漏洞复现
  • LAMP搭建WordPress
  • 【数学建模竞赛】预测类赛题常用算法解析
  • OFDM 系统在 AWGN 信道下对不同载波频率偏移 (CFO) 的 BER 灵敏度研究(Matlab代码实现)
  • go基础07-了解map实现原理并高效使用
  • SpringMVC进阶:常用注解、参数传递和请求响应以及页面跳转
  • nacos - centos7.x环境单机与集群快速部署
  • 文心一言初体验,和ChatGPT语言理解能力比较
  • 浏览器进程,性能指标,性能优化
  • Python基础set集合定义与函数
  • 【大数据之Kafka】九、Kafka Broker之文件存储及高效读写数据
  • Android 使用Camera2 API 和 GLSurfaceView实现相机预览
  • 说说IO多路复用
  • mysql 锁解决的办法
  • C++零碎记录(五)
  • 玩转Mysql系列 - 第16篇:变量详解