csv导入文件并且训练回归模型

mac2025-11-01  1

参考:https://morvanzhou.github.io/tutorials/machine-learning/torch/3-01-regression/ 莫烦python

 

# -*- coding: gbk -*- import torch import pandas as pd import torch.nn as nn import torch.utils.data as Data import torchvision # 数据库模块 import matplotlib.pyplot as plt import torch.nn.functional as F # 激励函数都在这 import numpy as np import csv BATCH_SIZE = 20 # 批训练的数据个数 LR=0.01 #显示所有列 pd.set_option('display.max_columns', None) #显示所有行 pd.set_option('display.max_rows', None) #设置value的显示长度为100,默认为50 pd.set_option('max_colwidth',200) torch.manual_seed(1) # reproducible tem=pd.read_csv("Behavior of the urban traffic of the city of Sao Paulo in Brazil.csv",sep=';') # print(food_info.dtypes) y0=np.array(tem.iloc[:,17]).reshape(135,1) x0=np.array(tem.iloc[:,0:17]).reshape(135,17) print(x0) cnt=0; for i in range(135): y0[i][0]=float(y0[i][0].replace(',','.')) x=torch.FloatTensor(x0) print(x) print(y0) print(y0.shape) y0=y0.astype('float32') print(x0.dtype,y0.dtype) y=torch.FloatTensor(y0) print(y) net = torch.nn.Sequential( torch.nn.Linear(17, 100), torch.nn.Sigmoid(), torch.nn.Linear(100, 1), # torch.nn.ReLU(), # torch.nn.Linear(25, 1) ) #print(net) optimizer= torch.optim.Adam(net.parameters(), lr=LR, betas=(0.9, 0.99)) #optimizer = torch.optim.SGD(net.parameters(), lr=0.02) # 传入 net 的所有参数, 学习率 loss_func = torch.nn.MSELoss() # 预测值和真实值的误差计算公式 (均方差) # plt.ion() # 画图 # plt.show() torch_dataset = Data.TensorDataset(x,y) # 把 dataset 放入 DataLoader loader = Data.DataLoader( dataset=torch_dataset, # torch TensorDataset format batch_size=BATCH_SIZE, # mini batch size shuffle=True, # 要不要打乱数据 (打乱比较好) #num_workers=2, # 多线程来读数据 ) for t in range(200): for step, (batch_x, batch_y) in enumerate(loader): # 每一步 loader 释放一小批数据用来学习 prediction = net(batch_x) # 喂给 net 训练数据 x, 输出预测值 loss = loss_func(prediction, batch_y) # 计算两者的误差 optimizer.zero_grad() # 清空上一步的残余更新参数值 loss.backward() # 误差反向传播, 计算参数更新值 optimizer.step() # 将参数更新值施加到 net 的 parameters 上 if(t%100==0): print(t) test_data=np.array([24,0,3,0,1,1,0,0,0,0,0,0,0,0,0,0,0]) test_data=torch.FloatTensor(test_data) prediction = net(test_data) # 喂给 net 训练数据 x, 输出预测值 print(prediction) torch.save(net, 'trafficnet.pkl') # 保存整个网络

 

最新回复(0)