首页 > 其他分享 >PyTorch进行汽车油耗多变量线性预测

PyTorch进行汽车油耗多变量线性预测

时间:2024-12-21 16:31:47浏览次数:4  
标签:features self dataset test PyTorch train 线性 data 油耗

数据集 AUTO MPG

Auto MPG(Miles Per Gallon)数据集,它是一个经典的回归问题数据集,常用于机器学习和统计分析。该数据集记录了不同型号汽车的燃油效率(即每加仑燃油行驶的英里数)以及其他多个相关特征。

数据集特征:
mpg: 每加仑燃油行驶的英里数(目标变量)。
cylinders: 气缸数量,表示发动机的气缸数。
displacement: 发动机排量(立方英寸)。
horsepower: 发动机功率(马力)。
weight: 车辆重量(磅)。
acceleration: 0到60英里每小时的加速度时间(秒)。
model_year: 车辆生产年份。
origin: 车辆产地(1=美国,2=欧洲,3=日本)。

def get_data():
    # 指定要检查的文件名
    file_name = 'mlg.csv'  

    # 获取当前工作目录
    current_directory = os.getcwd()

    # 构建完整的文件路径
    file_path = os.path.join(current_directory, file_name)

    # 检查文件是否存在
    if os.path.isfile(file_path):
        data = pd.read_csv('mlg.csv')
    else:
        url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data'
        column_names = ['mpg', 'cylinders', 'displacement', 'horsepower', 'weight','acceleration', 'model_year', 'origin']
        data = pd.read_csv(url, names=column_names, na_values='?', comment='\t', sep=' ', skipinitialspace=True)
        # 保存数据到当前目录
        data.to_csv('mlg.csv',index=None)
    return data

多变量模型

class MultiVariableModel(nn.Module):
    def __init__(self):
        super(MultiVariableModel, self).__init__()
        self.fc1 = nn.Linear(num_features, 64)  # 输入特征数为 num_features
        self.fc2 = nn.Linear(64, 32)
        self.fc3 = nn.Linear(32, 1)  # 输出一个预测值

    def forward(self, x):
        x = torch.relu(self.fc1(x))  # 第一层
        x = torch.relu(self.fc2(x))  # 第二层
        x = self.fc3(x)               # 输出层
        return x

训练和预测

data = get_data()

# drop 'origin'列
data = data.drop('origin',axis= 1)
# print(data.isna().sum())
data = data.dropna()

train_dataset = data.sample(frac=0.8, random_state=0)
test_dataset = data.drop(train_dataset.index)

#归一化
scaler = MinMaxScaler(feature_range=(0, 1))
train_dataset = scaler.fit_transform(train_dataset)
test_dataset = scaler.fit_transform(test_dataset)

# 
train_features = train_dataset[:,1:]
test_features = test_dataset[:,1:]
train_labels = train_features[:,0]
test_labels = test_features[:,0]

# 将数据转换为 PyTorch 张量
X_tensor = torch.tensor(train_features)
y_tensor = torch.tensor(train_labels).view(-1, 1)  # 目标变量需要是二维的
# 特征数量
num_features = 6

# 创建模型实例
model = MultiVariableModel()

# 创建数据集和数据加载器
dataset = TensorDataset(X_tensor.float(), y_tensor.float())
dataloader = DataLoader(dataset, batch_size=16, shuffle=True)


# 选择优化器和损失函数
optimizer = optim.Adam(model.parameters(), lr=0.001)
criterion = nn.MSELoss()


# 训练模型
num_epochs = 50
for epoch in range(num_epochs):
    for inputs, targets in dataloader:
        optimizer.zero_grad()  # 清空梯度
        outputs = model(inputs)  # 前向传播
        loss = criterion(outputs, targets)  # 计算损失
        loss.backward()  # 反向传播
        optimizer.step()  # 更新权重

    if (epoch + 1) % 10 == 0:  # 每10个epoch打印一次损失
        print(f'Epoch [{epoch + 1}/{num_epochs}], Loss: {loss.item():.4f}')

# # 训练完成后,可以进行预测
with torch.no_grad():
    test_input = torch.tensor(test_features) # 预测
    prediction = model(test_input.float()).detach().numpy()



plt.scatter(test_labels,prediction)
plt.show()

标签:features,self,dataset,test,PyTorch,train,线性,data,油耗
From: https://www.cnblogs.com/conpi/p/18620898

相关文章

  • 使用Anaconda和PyTorch编写深度学习Python代码
    摘要:通过Anaconda的虚拟环境和PyTorch的深度学习框架来建立Python的深度学习代码一、安装Anaconda在官网下载Anaconda,DownloadAnacondaDistribution|Anaconda等待漫长的下载过程这时候我推荐来一把酣畅淋漓的原神:二、配置Anaconda的国内镜像源参考:conda安装包_......
  • 【深度学习-环境篇】安装pytorch的全流程,跟着做就没问题
    文章目录打开任务管理器,看一下自己显卡的型号再到维基百科上查一下自己显卡的算力根据算力找到支持的cudaruntime版本看自己的cudadriver版本最终确定我们适用的cudaruntimeversion去pytorch官网找对应的版本进行安装在安装之前,我们先做一个别的事安装py......
  • Luogu P8112 [Cnoi2021] 符文破译 题解 [ 蓝 ] [ KMP ] [ 线性 dp ] [ 决策单调性 dp
    符文破译:KMP+dp的好题。暴力dp不难打出一个暴力dp:设计\(dp_i\)表示当前前\(i\)位全部完成了匹配,所需的最小分割数。转移也是简单的,我们在KMP的过程中进行dp转移,每次选取next不断跳向再前面的next,然后进行转移即可。很显然一个字符集大小为\(1\)的串就能轻松......
  • Pytorch常用内置损失函数合集
        PyTorch提供了多种内置的损失函数,适用于不同的任务和场景。这些损失函数通常已经优化并实现了常见的归约方式(如mean或sum),并且可以直接用于训练模型。以下是常见的PyTorch内置损失函数及其适用场景:1. 均方误差损失(MeanSquaredError,MSE)类名:nn.MSELoss......
  • 基于yolov8的小麦麦穗检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源
       更多目标检测、图像分类识别、目标追踪等项目可看我主页其他文章功能演示:基于yolov8的小麦麦穗检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】_哔哩哔哩_bilibili(一)简介基于yolov8的小麦麦穗检测系统在pytorch框架下实现的,这是一个完整的项目,包括......
  • 深度学习笔记06-VGG16-Pytorch实现人脸识别
    本文通过调用预训练模型VGG16并进行模型微调,从而实现人脸识别。文章目录前言一、加载数据1.导入库2.导入数据3.定义transforms4.查看类别5.划分数据集6.加载数据二、调用VGG161.加载预训练模型2.模型微调三、训练模型1.训练函数2.测试函数3.动态学习率设......
  • 基于vgg16和efficientnet卷积神经网络的天气识别系统(pytorch框架) 图像识别与分类 前
    基于vgg16和efficientnet卷积神经网络的天气识别系统(pytorch框架)前端界面:flask+python,UI界面:pyqt5+python这是一个完整项目,包括代码,数据集,模型训练记录,前端界面,ui界面,各种指标图:包括准确率,精确率,召回率,F1值,损失曲线,准确率曲线等卷积模型采用vgg16模型或efficien......
  • LT1529IQ-3.3#PBF 一款低压差线性稳压器(LDO)
    描述LT®1529/LT1529-3.3/LT1529-5是3A低压差稳压器,具有微功率静态电流和停机功能。这些器件能提供3A的输出电流和一个0.6V的压差电压。专为在电池供电型系统中使用而设计的低静态电流(工作时为50μA,而在停机模式中则为16μA)使其成为此类应用的理想选择。静态......
  • pycharm创建三个子图,分别绘制正弦函数,余弦函数,线性函数
    importnumpyasnp#导入快速绘图的函数库-pyplotimportmatplotlib.pyplotasplt#创建绘图对象figure#在【0,10】之间等距取1000个数字作为x的取值x=np.linspace(0,10,1000)y=np.sin(x)z=np.cos(x)k=x#创建子图-第一行左侧plt.subplot(221)#调用函数库pyp......
  • 【PyTorch】FutureWarning: You are using `torch.load` with `weights_only=False` (
    【PyTorch】FutureWarning:Youareusingtorch.loadwithweights_only=False(thecurrentdefault问题描述model.load_state_dict(torch.load(model_path))FutureWarning:Youareusing`torch.load`with`weights_only=False`(thecurrentdefaultvalue),......