01- 收入数据集【Pytorch入门实战】

目录

一、机器学习基础

二、实战例子

1.数据集分析

2.实战训练

3.总结

三、参考资料


一、机器学习基础

为了解决这个问题,人们想到数据驱动方法,也就是让计算机从现有的大量的带标签图片电学习规律,一旦计算机学习到了其中的规律,当我们输入一张新的图片给计算机时,它就可以准确的预测出这张图片到底是猫还是狗。

数据驱动方法是一种基于大量数据进行决策、预测和模式识别的方法。

这里有两个关键的因素:

一是大量的可学习数据,比如带标签的猫狗图片,二是学习的主体,我们一般称之为模型。

如何理解模型呢?

你可以把模型认为是一个映射函数,它包含一些参数,这些参数可以与输入进行计算得到一个输出,我们一般称之为预测结果

所谓模型学习的过程,就是模型修正其参数、改进映射关系的过程,可以简单的把模型的学习过程总结如下,以预测图片是猫还是狗为例:

1.创建模型;

2.输入一张带标签的图片;

3.使用模型对此图片做出预测

4.将预测结果与实际标签比较,产生的差距为损失

5.以减小损失为优化目标,根据损失优化模型参数,

6.循环重复上述第2-5步

二、实战例子

学习的例子使用的是“受教育程度与收入数据集”

1.数据集分析

单变量线性回归算法(比如,x代表学历,f(x)代表收入)

f(x)= w*+ b  --->    我们使用f(x)这个函数来映射输入特征和输出值

目标:预测函数f(x)与真实值之间的整体误差最小。

如何定义误差最小呢?

减小误差(直线距离两边的点越近越好【绝对值小,难以计算,使用均方误差代替】)

损失函数:使用均方差作为作为成本函数也就是 预测值和真实值之间差的平方取均值

优化的目标(y代表实际的收入)

找到合适的 w 和 b ,使得(f(x)- y)2越小越好

注意:现在求解的是参数 w和 b

如何优化?

使用梯度下降算法。

2.实战训练

①首先是用到的库

import os    
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'
import torch
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt    #Matplotlib是一个用于数据可视化的Python绘图库。

查看torch版本

torch.__version__

 

②读取数据集,并查看数据集的部分信息。

data = pd.read_csv('datasets/Income1.csv')
data.head()

 

将 data.Education 的值转换为一个二维数组,其中每个元素都是一个单独的列。

data.Education.values.reshape(-1,1)

将一个NumPy数组转换为PyTorch张量,并将其类型设置为FloatTensor。

③得到模型输入与结果

X = torch.from_numpy(data.Education.values.reshape(-1,1)).type(torch.FloatTensor)
Y = torch.from_numpy(data.Income.values.reshape(-1,1)).type(torch.FloatTensor)

查看X、Y的形状:

X.shape,Y.shape

 

④创建模型

from torch import nn     #torch中的高阶模块,包含各种层&损失函数

class EIModel(nn.Module):
    def __init__(self):                   #初始化方法
        super(EIModel, self).__init__()
        self.linear = nn.Linear(1, 1)     #输入的特征长度为1,输出的特征长度为1
    def forward(self, inputs):            #如何应用这些层(前向传播)
        logits = self.linear(inputs)
        return logits
#实例化模型

model = EIModel()

查看模型结构:一个线性层

⑤损失函数&优化器

loss_fn = nn.MSELoss()    #均方误差损失

opt = torch.optim.SGD(model.parameters(), lr=0.0001)    #随机梯度下降

 model.parameters()返回模型的可训练参数【优化的目标】,lr超参数

⑥训练

for epoch in range(1000):
    for x, y in zip(X, Y):
        y_pred = model(x)     #x输入得到y_pred输出,在model上调用,输入x,被forward方法的inputs接受。【模型预测】
        loss = loss_fn(y_pred, y)    #计算损失(input,target)【计算损失】
        
        opt.zero_grad()    #设置每次梯度清零【梯度清零】
        loss.backward()    #计算梯度(下降最快的方向)【损失反向传播】
        opt.step()    #改变参数,使参数沿着下降最快的方向移动【损失优化参数】
        

查看模型训练后的参数

model.linear.weight,model.linear.bias   #返回linear层的weight和bias

⑦绘制图像

plt.scatter(data.Education, data.Income)
plt.xlabel('Education')
plt.ylabel('Income')

plt.plot(X, model(X).detach().numpy(), 'r')

3.总结

输入数据处理

创建一个合适模型

训练

预测、评价

--->

机器学习:抽象出一条直线,来拟合现有的数据。【映射函数,输入映射输出】

三、参考资料

Pytorch深度学习入门与实战 - 网易云课堂 (163.com)

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值