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

机器学习-逻辑回归算法-基础数学原理版代码

`import numpy as np

x=[[1,5],[1,7],[1,3],[1,3],[1,5],[1,6],[1,9],[1,8],[1,7],[1,6]]
y=[0,1,0,0,0,1,1,1,1,1]

num_x=len(x)
num_fe=len(x[0])

初始化权重和Z

weight=[0.0 for _ in range (num_fe)]
Z=[0.0 for _ in range (num_x)]

设置学习率和训练次数

study=0.0001
train_item=500000000

开始训练

for i in range(train_item):
for a in range(num_x):
#正向传播 -净输入
Z[a]=weight[0]x[a][0]+weight[1]x[a][1]
#singmo -转换为激活函数的输出--将线性组合的结果转换为符合概率意义的预测值
y_two=[0.0 for _ in range (num_x)]
for b in range(num_x):
y_two[b]=(1/(1+np.exp(-Z[b])))
#反向传播 -gradient
gradient=[0.0 for _ in range (num_fe)]
for c in range(num_x):
gradient[0]=gradient[0]+(y_two[c]-y[c])x[c][0]
gradient[1]=gradient[1]+(y_two[c]-y[c])
x[c][1]
gra_av=[0.0 for _ in range(num_fe) ]
gra_av[0]=gradient[0]/(num_x)
gra_av[1]=gradient[1]/(num_x)
#权重更新-梯度下降算法
weight[0]=weight[0]-gra_av[0]study
weight[1]=weight[1]-gra_av[1]
study
#计算损失函数
if i % 50 ==0:
y_np=np.array(y)
y_two_np=np.array(y_two)
loss = -np.mean(y_np * np.log(y_two_np + 1e-8) + (1 - y_np) * np.log(1 - y_two_np + 1e-8))
print(f"{weight[0]},{weight[1]},损失函数{loss}")

def pre (x,weight):
#样本个数
num_x=len(x)
#预测个数
pre_np=np.zeros(num_x)
z=np.zeros(num_x)
for i in range(num_x):
z[i]=weight[0]x[i][0]+weight[1]x[i][1]
pre_np[i]=(1/(1+np.exp(-z[i])))
return pre_np

x_test=[[1,5],[1,7]]
y_test=[0,1]

pre_test=pre(x_test,weight)
y_test_pre=(pre_test>0.5).astype(int)

print(f"预测结果{y_test_pre}")`

http://www.jsqmd.com/news/32619/

相关文章:

  • 测试理论知识
  • 100小时学会SAP—问题1:FB50 做总账凭证时提示过账码没有定义
  • 模拟赛记录 11/5
  • Win11 改虚拟内存到C盘之外的盘 - Leone
  • 随机数板子 - miao
  • CSS元素定位
  • 题解:P13933 [蓝桥杯 2022 省 Java B] 最大子矩阵
  • 深度学习非专业解释
  • 内存管理-50-可读性-1-page_flags.h - Hello
  • 25.11.05
  • 在React中实现路由跳转
  • 022304105叶骋恺数据采集第二次作业
  • 2025.11.5模拟赛
  • ai编程第一次实战
  • WordPress Social Feed Gallery插件未授权信息泄露漏洞分析
  • [题解]P14094 [ICPC 2023 Seoul R] Special Numbers
  • ASP.NET Core Blazor 核心功能三:Blazor与JavaScript互操作——让Web开发更灵活
  • 测试思维的培养
  • NOIP2025模拟2 改题记录
  • 10-16
  • ASP.NET Core Blazor 核心功能二:Blazor与JavaScript互操作——让Web开发更灵活
  • 10-15
  • 10-14
  • 模拟赛 32
  • top 命令的load average和vmstat 的r列和b列的关系是什么?区别又是什么?
  • 2025-11-1
  • 2025-11-5
  • 2025-11-3
  • 2025-11-4
  • 2025-11-2