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

逻辑回归机器学习

线性组合的基础上加上非线性变换

y=kx+b

torch.nn.linear(input,output)

torch.sigmoid(input)

torch.nn.BCELoss()



import numpy as np
import torch
import matplotlib.pyplot as plt
from onnxslim.core import optimize

x = np.linspace(-5,5,20, dtype=np.float32)//-5,5之间随机生成20个数
_b=1/(1 + np.exp(-x))//通过变换得到_b
y = np.random.normal(_b,0.005)//在此基础上加上0.05的噪声来获得y

x = np.float32(x.reshape(-1,1))
y = np.float32(y.reshape(-1,1))


class LogicRegressionModel(torch.nn.Module):
    def __init__(self, input_dim, output_dim):
        super(LogicRegressionModel, self).__init__()
        self.linear = torch.nn.Linear(input_dim, output_dim)

    def forward(self, x):
        out = torch.sigmoid(self.linear(x))//sigmoid 函数的作用是将输入的实数映射到区间 (0, 1) 上。在神经网络中,激活函数可以引入非线性因素,使得网络能够学习和表示复杂的模式。对于逻辑回归模型来说,sigmoid 函数将线性层的输出转换为一个概率值,即表示输入属于某一类别的可能性。在这段代码中,torch.sigmoid(self.linear(x)) 就是将线性层的输出通过 sigmoid 函数进行变换,得到最终的输出 out,这个 out 的值在 0 到 1 之间,可以被解释为一个概率预测值。
        return out



input_dim = 1
output_dim = 1
model = LogicRegressionModel(input_dim, output_dim)
criterion = torch.nn.BCELoss()在二分类问题中,我们希望模型输出一个概率值,表示输入样本属于正类的可能性。二元交叉熵损失就是用来衡量模型预测的概率值与真实标签(通常为 0 或 1,表示负类和正类)之间的差距。如果模型预测的概率值与真实标签越接近,那么二元交叉熵损失就越小;反之,损失就越大。
learning_rate = 0.01
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)


import numpy as np
import torch
import matplotlib.pyplot as plt
from onnxslim.core import optimize

x = np.linspace(-5,5,20, dtype=np.float32)
_b=1/(1 + np.exp(-x))
y = np.random.normal(_b,0.005)

x = np.float32(x.reshape(-1,1))
y = np.float32(y.reshape(-1,1))


class LogicRegressionModel(torch.nn.Module):
    def __init__(self, input_dim, output_dim):
        super(LogicRegressionModel, self).__init__()
        self.linear = torch.nn.Linear(input_dim, output_dim)

    def forward(self, x):
        out = torch.sigmoid(self.linear(x))
        return out


input_dim = 1
output_dim = 1
model = LogicRegressionModel(input_dim, output_dim)
criterion = torch.nn.BCELoss()
learning_rate = 0.01
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)

for epoch in range(100):
    epoch +=1
    inputs = torch.from_numpy(x).requires_grad_()
    labels = torch.from_numpy(y)

    optimizer.zero_grad()
    outputs = model(inputs)
    loss = criterion(outputs, labels)
    loss.backward()
    optimizer.step()
    print('epoch {}, loss {}'.format(epoch + 1, loss.item()))

# 绘制结果
predicted_y=model(torch.from_numpy(x).requires_grad_()).data.numpy()
print("标签y",y)
print("预测y",predicted_y)
plt.clf()
predicted=model(torch.from_numpy(x).requires_grad_()).data.numpy()
plt.plot(x,y,'go',label='True data',alpha=0.5)
plt.plot(x,predicted_y,'--',label='Predictions',alpha=0.5)
plt.legend(loc='best')
plt.show()

http://www.dtcms.com/a/58845.html

相关文章:

  • Java零基础入门笔记:多线程
  • 元脑服务器:浪潮信息引领AI基础设施的创新与发展
  • NVIDIA显卡30年:从加密矿潮到AI霸权
  • 1个基于 Three.js 的 Vue3 组件库
  • JavaScript 是什么?
  • yolov5训练自己数据集的全流程+踩过的坑
  • Mysql5.7-yum安装和更改mysql数据存放路径-2020年记录
  • JVM常见面试题
  • 跨越时空的对话:图灵与GPT-4聊AI的前世今生
  • nats jetstream server code 分析
  • 【2025年26期免费获取股票数据API接口】实例演示五种主流语言获取股票行情api接口之沪深A股涨停股池数据获取实例演示及接口API说明文档
  • Prompt engineering设计原则
  • 【芯片验证】verificationguide上的74道SystemVerilog面试题
  • Phi-4-multimodal:图、文、音频统一的多模态大模型架构、训练方法、数据细节
  • 向死而生:在心灵废墟上重建生命圣殿——论自我蜕变的五重维度
  • Linux网络之数据链路层协议
  • 蓝桥杯备考:图论初解
  • 如何避免依赖关键人员导致“单点故障”
  • 基于深度文档理解的开源 RAG 引擎RAGFlow的介绍和安装
  • git在cmd的操作
  • 【计算机网络】UDP
  • DMA在STM32中的应用
  • 文件上传靶场(10--20)
  • OPENGLPG第九版学习 -颜色、像素和片元 PART1
  • Educational Codeforces Round 27 G.Shortest Path Problem? 线性基、dfs
  • 通俗易懂的介绍LLM大模型技术常用专业名词(通用版)
  • 【redis】慢查询分析与优化
  • 三星首款三折叠手机被曝外屏6.49英寸:折叠屏领域的新突破
  • 只音 1.2.0 |纯净无广告,畅听全网音乐,支持无损下载和批量下载
  • 如何借助 ArcGIS Pro 高效统计基站 10km 范围内的村庄数量?