pytorch做一个简单的预测器

根据天气情况(温度湿度)、工作日这些特征属性预测共享单车的出行数量这一目标属性的值

数据预处理

对类型变量的处理:

  • Weekday:1,2,3,4,5,6,0 进行类型编码(one-hot编码):
    ->星期日1000000,星期一0100000,星期二0010000,星期三0001000,星期四0000100,星期五0000010,星期六0000001
  • 天气:0,1,2 (温度,适度,风力)这种数值类数据变量进行变量标准化:
    ->假设一个数据的值符合正态分布,我们可以通过(原始数据-平均值)/方差 方式进行标准化处理,然后这些值就都落到[0,1]这一范围内

数据准备

将数据集进行切分,分为训练集和测试集,用训练集训练神经网络模型,用测试集测试训练好的模型,观察其准确度
划分具有任意性,可以进行多次划分,提高准确度
如何训练?将训练集分割成小的批(batch,128条记录),然后对每一小批进行误差计算、反向传播,调整权重

建立人工神经网络

有59个输入单元(分别对应处理后的特征属性),隐含层有十个单元(隐含层的单元个数取决于问题的复杂度,单元个数越多,学习能力越强,但有可能过拟合),还有一个输出层

1.构建网络模型

(1)nn.Linear()是表示建立一层线性连接单元,以构建从输入层到隐藏层节点的映射,输入维度input_size,隐含维度hidden_size。
(2)nn.sigmoid() 作用到每一个隐含层神经元上,也就是第一层神经网络到第二层神经网络的非线性运算
(3)从隐含层到输出层的线性运算,神经元个数分别为hidden_size和output_size
所有神经网络的参数都存储在neu.parameters()里面了
最后再用sequential语句创建神经网络,存储到neu这个变量里

neu=torch.nn.Sequential(
	torch.nn.Linear(input_size,hidden_size),
	torch.nn.Sigmoid(),
	torch.nn.Linear(hidden_size,output_size),

在这里插入图片描述

2. 建立损失函数和优化器

定义损失函数,torch.nn.MSELoss()等价于torch.mean((y-y*)^2),其中cost为函数指针
定义优化器 ,torch.optim.SGD是随机梯度下降梯度 neu.parameters()返回神经网络neu的所有权重、偏置参数,lr是学习率

cost=torch.nn.MSELoss()
optimizer=torch.optim.SGD(neu.parameters(),lr=0.01)
3.对神经网络进行分批次训练
for i in range[2000]: #2000就是训练次数epoch
	batch_loss=[]#记录每一批次的损失
	#每128个样本点被划分为一批次
	#start和end分别是提取一个batch数据的起始和终止下标
	for start in range(0, len(X), batch_size):
		end= start+batch_size if start+batch_size<len(X) else len(X)
		xx=Variable(torch.FloatTensor(X[start:end]))#得到一个批次中的特征属性数据
		yy=Variable(torch.FloatTensor(Y[start:end]))#得到一个批次中的目标属性数据
		predict= neu(xx) #模型预测
		loss= cost(predict, y)#计算损失函数(均方误差)
		
		optimizer.zero_grad()#将优化器存储的那些参数的梯度设置为0
		loss.backward()#开始反向传播,计算所有梯度
		optimizer.step()#优化器开始运行一步 ,更新所有的参数
		batch_loss.append(loss.data.numpy())
	#每隔100步输出一下损失值(loss)
	if i%100==0:
		losses.append(np.mean(batch_loss))
		print(i,np.mean(batch_loss))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值