返回顶部
首页 > 资讯 > 后端开发 > Python >PyTorch实现多维度特征输入逻辑回归
  • 270
分享到

PyTorch实现多维度特征输入逻辑回归

2024-04-02 19:04:59 270人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、实现过程1、准备数据2、设计模型4、训练过程5、结果展示二、参考文献一、实现过程 1、准备数据 本文数据采取文献[1]给出的数据集,该数据集前8列为特征,最后1列为标签(0/

一、实现过程

1、准备数据

本文数据采取文献[1]给出的数据集,该数据集前8列为特征,最后1列为标签(0/1)。本模型使用pandas处理该数据集,需要注意的是,原始数据集没有特征名称,需要自己在第一行添加上去,否则,pandas会把第一行的数据当成特征名称处理,从而影响最后的分类效果。

代码如下:

# 1、准备数据
import torch
import pandas as pd
import numpy as np
xy = pd.read_csv('G:/datasets/diabetes/diabetes.csv',dtype=np.float32)    # 文件路径
x_data = torch.from_numpy(xy.values[:,:-1])
y_data = torch.from_numpy(xy.values[:,[-1]])

2、设计模型

本文采取文献[1]的思路,激活函数使用ReLU,最后一层使用Sigmoid函数,

代码如下:

class Model(torch.nn.Module):
    def __init__(self):
        super(Model,self).__init__()
        self.linear1 = torch.nn.Linear(8,6)
        self.linear2 = torch.nn.Linear(6,4)
        self.linear3 = torch.nn.Linear(4,1)
        self.activate = torch.nn.ReLU()
    
    def forward(self, x):
        x = self.activate(self.linear1(x))
        x = self.activate(self.linear2(x))
        x = torch.sigmoid(self.linear3(x))
        return x
model = Model()

将模型和数据加载到GPU上,代码如下:

### 将模型和训练数据加载到GPU上
# 模型加载到GPU上
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model.to(device)
# 数据加载到GPU上
x = x_data.to(device)
y = y_data.to(device)
3、构造损失函数和优化器
criterion = torch.nn.BCELoss(reduction='mean')
optimizer = torch.optim.SGD(model.parameters(),lr=0.1)

4、训练过程

epoch_list = []
loss_list = []
epochs = 10000
for epoch in range(epochs):
    # Forward
    y_pred = model(x)
    loss = criterion(y_pred, y)
    print(epoch, loss)

    epoch_list.append(epoch)
    loss_list.append(loss.data.item())

    # Backward
    optimizer.zero_grad()
    loss.backward()

    # Update
    optimizer.step()

5、结果展示

查看各个层的权重和偏置:

model.linear1.weight,model.linear1.bias
model.linear2.weight,model.linear2.bias
model.linear3.weight,model.linear3.bias

损失值随迭代次数的变化曲线:

# 绘图展示
plt.plot(epoch_list,loss_list,'b')
plt.xlabel('epoch')
plt.ylabel('loss')
plt.grid()
plt.show()

最终的损失和准确率:

# 准确率
y_pred_label = torch.where(y_pred.data.cpu() >= 0.5,torch.tensor([1.0]),torch.tensor([0.0]))
acc = torch.eq(y_pred_label, y_data).sum().item()/y_data.size(0)

print("loss = ",loss.item(), "acc = ",acc)

loss =  0.4232381284236908 acc =  0.7931488801054019

二、参考文献

  • [1] https://www.bilibili.com/video/BV1Y7411d7Ys?p=7
  • [2] Https://blog.csdn.net/bit452/article/details/109682078

 到此这篇关于PyTorch实现多维度特征输入逻辑回归的文章就介绍到这了,更多相关PyTorch逻辑回归内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: PyTorch实现多维度特征输入逻辑回归

本文链接: https://lsjlt.com/news/141791.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PyTorch实现多维度特征输入逻辑回归
    目录一、实现过程1、准备数据2、设计模型4、训练过程5、结果展示二、参考文献一、实现过程 1、准备数据 本文数据采取文献[1]给出的数据集,该数据集前8列为特征,最后1列为标签(0/...
    99+
    2024-04-02
  • pytorch实现逻辑回归
    本文实例为大家分享了pytorch实现逻辑回归的具体代码,供大家参考,具体内容如下 一、pytorch实现逻辑回归 逻辑回归是非常经典的分类算法,是用于分类任务,如垃圾分类任务,情感...
    99+
    2024-04-02
  • Pytorch实现逻辑回归分类
    本文实例为大家分享了Pytorch实现逻辑回归分类的具体代码,供大家参考,具体内容如下 1、代码实现 步骤: 1.获得数据2.建立逻辑回归模型3.定义损失函数4.计算损失函数5.求解...
    99+
    2024-04-02
  • 基于Pytorch实现逻辑回归
    本文实例为大家分享了Pytorch实现逻辑回归的具体代码,供大家参考,具体内容如下 1.逻辑回归  线性回归表面上看是“回归问题”,实际上处理的问题...
    99+
    2024-04-02
  • pytorch使用nn.Moudle实现逻辑回归
    本文实例为大家分享了pytorch使用nn.Moudle实现逻辑回归的具体代码,供大家参考,具体内容如下 内容 pytorch使用nn.Moudle实现逻辑回归 问题 loss下降不...
    99+
    2024-04-02
  • pytorch逻辑回归实现步骤详解
    目录1. 导入库2. 定义数据集2.1 生成数据2.2 设置label3. 搭建网络+优化器4. 训练5. 绘制决策边界6. 代码1. 导入库 机器学习的任务分为两大类:分类和回归 ...
    99+
    2024-04-02
  • python实现梯度下降求解逻辑回归
    本文实例为大家分享了python实现梯度下降求解逻辑回归的具体代码,供大家参考,具体内容如下 对比线性回归理解逻辑回归,主要包含回归函数,似然函数,梯度下降求解及代码实现 线性回归 ...
    99+
    2024-04-02
  • python如何实现梯度下降求解逻辑回归
    线性回归1.线性回归函数似然函数的定义:给定联合样本值X下关于(未知)参数 的函数似然函数:什么样的参数跟我们的数据组合后恰好是真实值 2.线性回归似然函数对数似然: 3.线性回归目标函数(误差的表达式,我们的目的就是使得真实值与预...
    99+
    2023-05-14
    Python
  • python怎么实现梯度下降求解逻辑回归
    今天小编给大家分享一下python怎么实现梯度下降求解逻辑回归的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。线性回归1.线性...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作