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

 更新时间:2022年03月09日 17:17:47   作者:心️升明月  
这篇文章主要介绍了PyTorch实现多维度特征输入逻辑回归,首先进行数据采取数据集展开详细内容,需要的小伙伴可以参考一下

一、实现过程

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

二、参考文献

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

相关文章

  • 使用python和pygame制作挡板弹球游戏

    使用python和pygame制作挡板弹球游戏

    这篇文章主要介绍了使用python和pygame制作挡板弹球游戏,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • python使用socket连接远程服务器的方法

    python使用socket连接远程服务器的方法

    这篇文章主要介绍了python使用socket连接远程服务器的方法,涉及Python中socket通信的基本技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • Python PyQt拖动控件对齐到网格的方法步骤

    Python PyQt拖动控件对齐到网格的方法步骤

    pyqt是一个用于创建GUI应用程序的跨平台工具包,它将python与qt库融为一体,下面这篇文章主要给大家介绍了关于Python PyQt拖动控件对齐到网格的方法步骤,需要的朋友可以参考下
    2022-12-12
  • 利用selenium 3.7和python3添加cookie模拟登陆的实现

    利用selenium 3.7和python3添加cookie模拟登陆的实现

    这篇文章主要给大家介绍了关于利用selenium 3.7和python3添加cookie模拟登陆的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11
  • python使用json序列化datetime类型实例解析

    python使用json序列化datetime类型实例解析

    这篇文章主要介绍了python使用json序列化datetime类型实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • python使用tcp实现局域网内文件传输

    python使用tcp实现局域网内文件传输

    这篇文章主要介绍了python使用tcp实现局域网内文件传输,文件包括文本,图片,视频等,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Python-OpenCV实现图像缺陷检测的实例

    Python-OpenCV实现图像缺陷检测的实例

    本文将结合实例代码,在Jupyter Notebook上使用Python+opencv实现如下图像缺陷检测。需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • 在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例

    在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例

    今天小编就为大家分享一篇在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python中的[1:]、[::-1]、X[:,m:n]和X[1,:]的使用

    python中的[1:]、[::-1]、X[:,m:n]和X[1,:]的使用

    本文主要介绍了python中的[1:]、[::-1]、X[:,m:n]和X[1,:]的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Python解析toml配置文件的方法分享

    Python解析toml配置文件的方法分享

    在开发过程中,配置文件是少不了的,而且配置文件是有专门的格式的,比如:ini,yaml,toml等等。本文带大家来看看Python如何解析toml文件,需要的可以参考一下
    2022-09-09

最新评论