数据、代码等相关资料来源于b站日月光华老师视频,此博客作为学习记录。
一、读入数据集
导入包和读取数据集
import torch
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.read_csv(r'E:\Code\pytorch\第2章\Income1.csv') #读入文件
print(data.head())
最后print打印出读入的数据集:
查看数据集整体情况:
data.info
二、绘图
plt.scatter(data.Education, data.Income) # scatter绘制散点图,逗号前是x轴,后为y轴
plt.xlabel('Education') # x轴名
plt.ylabel('Income') # y轴名
plt.show()
如图:
数据转换:
X = torch.from_numpy(data.Education.values.reshape(-1, 1)).type(torch.FloatTensor)
# data.Education就是取数据集中Education那一列的数据,.values是将所有的数据存放在了一个数组中
# 进行reshape转化成30个维度为1的数据,其中-1代表的是自动计算,1代表reshape之后的维度
# torch.from_numpy就是把数据转换成torch中的tensor
# .type(torch.FloatTensor)转换数据类型为FloatTensor形式
Y = torch.from_numpy(data.Income.values.reshape(-1, 1)).type(torch.FloatTensor)
# X为输入的特征,Y为target
print(X.shape)
通过X.shape可查看数据格式:
三、模型创建
单变量线性回归
提前导入nn模块:
from torch import nn
有三个关键点:
①、必须继承自nn.module
②、定义初始化模块
③、定义前向传播,返回给一个值
代码如下:
# pytorch模型创建必须继承自nn.module
class EIModel(nn.Module): # nn.Module的M是大写
def __init__(self): # ①定义初始化方法,包括层、属性、变量等
super(EIModel,self).__init__()
self.linear = nn.Linear(in_features=1, out_features=1) # 初始化一个linear层
def forward(self, input): # ②定义前向传播
logits = self.linear(input) # input在linear层上去调用
return logits # 调用结果返回给logits
model = EIModel() #实例化
初始化的linear层:括号内是(输入的维度大小,输出的维度大小)
打印出来看看modle: