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

机器学习-逻辑回归算法-向量版代码

`import numpy as np

x_train=[[1,2],[1,3],[1,6],[1,9],[1,2],[1,3],[1,6],[1,9]]
y_train=[1,1,0,0,1,1,0,0]
x_train_num=len(x_train)

向量化训练组

x_a=np.array(x_train)
x_v=(x_a.T)
y_v=np.array(y_train)
print(f"x_v={x_v},y_v={y_v}")

学习率和训练次数

stu_rate=0.01
train_item=1000

权重向量化初始化

weight=np.zeros((2,1))

基本偏置,避免input=0,output=0

b=0

激活函数-给网络引入非线性运算

def singmo (z):
a=1/(1+np.exp(-z))
return a

开始训练

for i in range(train_item):
#计算线性输入,向量点积,向量化
Z=np.dot(weight.T,x_v)+b
print(f"Z={Z}")
#反向传播求梯度
#初始wight=0时,A=0.5
A=singmo(Z)
print(f"A={A}")
#计算梯度
#a-y
dz=np.zeros((1,8))
dz=A-y_v
dz=dz.T
print(f"dz={dz}")
#gradient
dw=np.zeros((2,1))
dw=np.array(dw)
dw=(np.dot(x_v,dz))/x_train_num
print(f"gradient={dw}")

db=(np.sum(dz))/x_train_num#更新权重
weight=weight-stu_rate*dw
b=b-stu_rate*db
#检测损失函数
if i % 50 ==0:loss = -np.mean(y_v * np.log(A ) + (1 - y_v) * np.log(1 -A ))print(f"权重向量{weight},损失函数{loss}")

def pre (x,weight,b):
def singmo (z):
a=1/(1+np.exp(-z))
return a
x_test_array = np.array(x).T
Z=np.dot(weight.T,x_test_array)+b
result=singmo(Z)
print(f"Z={result}")
return result

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

pre_test=pre(x_test,weight,b)
y_test_pre=(pre_test>0.5).astype(int)
print(f"预测结果{y_test_pre}")

`

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

相关文章:

  • 星期三
  • 「学习笔记」文件包含
  • 【AI说Rust 03】如何在 macos m1 系统搭建 rust 开发环境
  • 厨房小白学做饭——4.干锅菜花
  • 操盘计划202511090017
  • Effective C++
  • 厨房小白学做饭——3.虎皮青椒
  • 20251105 之所思 - 人生如梦
  • 【Kubernetes】入门-部署Spring应用
  • 第16天(简单题中等题 二分查找)
  • Java项目常用异常处理场景与实战指南
  • newDay18
  • 11月5日
  • 层级结构
  • 2025.11.5总结 - A
  • C# POST Form
  • 每日反思(2025_11_04)
  • C++练习2
  • 买完学习机还需要去线下补课吗? AI 学习机 + 自习室是最优解!
  • 一次性删除所有的GitHub Action记录
  • 第三十四篇
  • 2025-11-05 PQ v.Next日志记录
  • 11月5日日记
  • 20232319 2024-2025-1 《网络与系统攻防技术》实验四实验报告
  • 汉字识别
  • AGC与AVC是什么
  • 链表1
  • 競プロ典型 90 問-难题
  • c++函数调用的大致工作过程
  • Slack端到端测试管道优化:构建时间减半的技术实践