# import torch
# import torch.nn as nn
# import numpy as np
# import pandas as pd
# import torch.optim as optim
# from torch.utils.data import DataLoader,Dataset
# device = torch.device("cpu" if torch.cuda.is_available() else "cpu")
# class mydata_train(Dataset):
# def __init__(self,path):
# data=np.array(pd.read_csv(path))
# self.len=data.shape[0]
# self.X=torch.from_numpy(data[:,:-1]).float()
# self.y=torch.from_numpy(data[:,-1]).float()
# def __getitem__(self, index):
# return self.X[index],self.y[index]
# def __len__(self):
# return self.len
# class Model(nn.Module):
# def __init__(self):
# super(Model,self).__init__()
# self.lr1=nn.Linear(20,64)
# self.lr2=nn.Linear(64,10)
# self.lr3=nn.Linear(10,2)
# self.relu = nn.ReLU()
# self.soft=nn.Softmax()
# def forward(self,x):
# x=self.relu(self.lr1(x.float()))
# x=self.lr2(x)
# x=self.soft(self.lr3(x))
# return x
# def accuracy(predictions, labels):
# pred = torch.max(predictions.data, 1)[1]
# rights = pred.eq(labels.data.view_as(pred)).sum()
# return rights, len(labels)
# train_dataset=mydata_train("torch_train.csv")
# test_dataset=mydata_train("torch_test.csv")
# train_loader=DataLoader(dataset=train_dataset,batch_size=128,shuffle=True)
# test_loader=DataLoader(test_dataset,batch_size=64,shuffle=False)
# model=Model()
# criterion=nn.MSELoss()
# optimizer=optim.Adam(model.parameters(),lr=0.1)
# epochs=100
# for epoch in range(epochs):
# model.train()
# train_rights = []
# for id,(data,target) in enumerate(train_loader):
# data=data.to(device)
# target=target.to(device)
# target = torch.unsqueeze(target, dim=1)
# optimizer.zero_grad()
# output=model(data)
# loss=criterion(output,target)
# loss.backward()
# optimizer.step()
# right = accuracy(output, target)
# train_rights.append(right)
# model.eval()
# test_rights=[]
# for id,(data,target) in enumerate(test_loader):
# data = data.to(device)
# target = target.to(device)
# output = model(data)
# right = accuracy(output, target)
# test_rights.append(right)
# train_r = (sum([tup[0] for tup in train_rights]), sum([tup[1] for tup in train_rights]))
# test_r = (sum([tup[0] for tup in test_rights]), sum([tup[1] for tup in test_rights]))
# print(f"train_acc:{(100.*train_r[0]/train_r[1]).item()},test_acc:{(100.*test_r[0]/test_r[1]).item()}")
import torch
import torch.nn as nn
import numpy as np
import pandas as pd
import torch.optim as optim
from torch.utils.data import DataLoader, Dataset
device = torch.device("cpu" if torch.cuda.is_available() else "cpu")
class mydata_train(Dataset):
def __init__(self, path):
data = np.array(pd.read_csv(path))
self.len = data.shape[0]
self.X = torch.from_numpy(data[:, :-1]).float()
self.y = torch.from_numpy(data[:, -1]).long()
def __getitem__(self, index):
return self.X[index], self.y[index]
def __len__(self):
return self.len
class Model(nn.Module):
def __init__(self):
super(Model, self).__init__()
self.lr1 = nn.Linear(20, 64)
self.lr2 = nn.Linear(64, 10)
self.lr3 = nn.Linear(10, 2)
self.relu = nn.ReLU()
self.soft = nn.LogSoftmax(dim=1)
def forward(self, x):
x = self.relu(self.lr1(x.float()))
x = self.lr2(x)
x = self.soft(self.lr3(x))
return x
def accuracy(predictions, labels):
pred = torch.max(predictions, 1)[1]
rights = pred.eq(labels.data.view_as(pred)).sum()
return rights, len(labels)
train_dataset = mydata_train("torch_train.csv")
test_dataset = mydata_train("torch_test.csv")
train_loader = DataLoader(dataset=train_dataset, batch_size=128, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)
model = Model()
criterion = nn.NLLLoss()
optimizer = optim.Adam(model.parameters(), lr=0.1)
epochs = 100
for epoch in range(epochs):
model.train()
train_rights = []
for id, (data, target) in enumerate(train_loader):
data = data.to(device)
target = target.to(device)
optimizer.zero_grad()
output = model(data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
right = accuracy(output, target)
train_rights.append(right)
model.eval()
test_rights = []
for id, (data, target) in enumerate(test_loader):
data = data.to(device)
target = target.to(device)
output = model(data)
right = accuracy(output, target)
test_rights.append(right)
train_r = (sum([tup[0] for tup in train_rights]), sum([tup[1] for tup in train_rights]))
test_r = (sum([tup[0] for tup in test_rights]), sum([tup[1] for tup in test_rights]))
print(f"第{epoch}次:train_acc: {(100. * train_r[0] / train_r[1]).item()}, test_acc: {(100. * test_r[0] / test_r[1]).item()}")
Kaggle的比赛题目home-credit-default-risk的代码
需积分: 0 18 浏览量
2024-01-23
21:05:03
上传
评论 2
收藏 261KB ZIP 举报
![avatar](https://profile-avatar.csdnimg.cn/ca8da63c609c47a4a2a4a638e7849e43_jshgz8.jpg!1)
---wzy---
- 粉丝: 33
- 资源: 5
最新资源
- 前端学习笔记,做一个简单的网站-留言板,学习代码
- 前端学习笔记,做一个简单的网站-数组转对象,学习代码
- 前端学习笔记,做一个简单的网站-数组排序,学习代码
- 前端学习笔记,做一个简单的网站-数组去重,学习代码
- 前端学习笔记,做一个简单的网站-数组去0,学习代码
- 前端学习笔记,做一个简单的网站-将class的属性值中的hide更换为show,学习代码
- 前端学习笔记,做一个简单的网站-将class的属性值中的hide更换为show,学习代码
- 前端学习笔记,做一个简单的网站-喇叭花数,学习代码
- 前端学习笔记,做一个简单的网站-利用事件委托的方法,给一个无序列表的列表项添加点击更改背景色事件,学习代码
- LiveDraw 64位
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)