Pytorch 实现逻辑回归
2023-09-14 09:08:53 时间
1 导入实验需要的包
import numpy as np import pandas as pd import torch from torch import nn import matplotlib.pyplot as plt from torch.autograd import Variable from torch.utils.data import DataLoader,TensorDataset import os os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
2 加载数据集
data =pd.read_csv("./dataset/credit-a.csv") X = data.iloc[:,:-1] Y = data.iloc[:,-1]
3 数据转换
Y = Y.replace(-1,0) #替换标签 -1 ,改成 0 Y.unique() #查看有几种标签数据 #数据转换为Tensor X = torch.from_numpy(X.values).type(torch.float32) Y = torch.from_numpy(Y.values.reshape(-1,1)).type(torch.float32)
4 设置迭代器,将数据转换在cuda下
def load_data(X,Y,batch_size): X = torch.autograd.Variable(X).cuda() Y = torch.autograd.Variable(Y).cuda() print("type x",X) data = TensorDataset(X,Y) data_loader = DataLoader(data,batch_size,shuffle=True) # data_loader = DataLoader(data,batch_size,shuffle=False) return data_loader
5 参数初始化及读取数据
batchs_size = 16 data_iter = load_data(X,Y,batchs_size) #最后的代码用到了,cpu()那行 X = torch.autograd.Variable(X).cuda() Y = torch.autograd.Variable(Y).cuda()
6 设置模型
model = nn.Sequential() model.add_module('mylinear1',nn.Linear(15,1)) model.add_module('mysigmoid',nn.Sigmoid()) if torch.cuda.is_available(): model.cuda()
7 设置损失函数
loss_fn = nn.BCELoss()
8 设置优化器
optimizer = torch.optim.Adam(model.parameters(),lr=0.0001) # optimizer = torch.optim.SGD(model.parameters(),lr=0.001)
9 训练模型
epochs = 150 for epoch in range(epochs): correct = 0 for x,y in data_iter: y_hat = model(x) loss = loss_fn(y_hat,y) # print(y_hat.ge(0.5)) out = y_hat.ge(0.5).float() # 以0.5为阈值进行分类 correct += (out == y).sum() # 计算正确预测的样本个数 optimizer.zero_grad() loss.backward() optimizer.step() print("epoch %d ,current acc = %.4f"%(epoch+1,correct/Y.shape[0])) print("epoch %d ,current loss = %.4f"%(epoch+1,loss))
10 其他
# ((model(X).data.numpy()> 0.5).astype('int')==Y.numpy()).mean() ((model(X).data.cpu().numpy()> 0.5).astype('int')==Y.cpu().numpy()).mean()
model(X).data.cpu()
相关文章
- 新闻发布项目——业务逻辑层(commentServiceImpl)
- 新闻发布项目——业务逻辑层(newsTbService)
- 逻辑回归、决策树、支持向量机算法三巨头
- Cloud for Customer根据后台数据实时刷新的逻辑调试
- SAP CRM Business Partner 自动决定Determination的执行逻辑
- windows程序设计(五)---映射模式(转换设备坐标和逻辑坐标)
- Atitit 软件设计中的各种图纸 uml 之道 1. 常见设计成果与图纸1 1.1. ui原型图与html1 1.2. 业务逻辑 伪代码 各种uml图1 1.3. 业务逻辑 流程图 ns
- 〖Python语法进阶篇⑳〗- 综合实战 - 抽奖系统之user模块 - user的抽奖逻辑实现
- 【Pytorch深度学习实战】(3)逻辑回归(Logistic Regression)
- Go Programming Blueprints 读书笔记(谈到了nsq/mgo处理数据持久化,可是业务逻辑不够复杂)
- 普通逻辑(00024考点)
- 【人工智能简史】第二章 早期实验与尝试——图灵测试与图灵机器、逻辑理论机与麦卡锡、第一个人工智能程序:塞缪尔的西洋棋程序
- 机器学习算法(一): 基于逻辑回归的分类预测-Task01
- pytorch学习笔记(五):逻辑斯蒂回归(Logistic Regression)