夯基数学:PyTorch 线性回归实践

线性回归是我们中学课本中学的最基础的概念之一,用于建立变量之间线性关系的统计方法;

在简单线性回归中,会建立一个因变量与一个自变量之间的线性关系模型。

我们可以用 PyTorch 来实现一些简单的线性回归实践。

房价预测

数据准备

首先准备一些数据来训练型:使用一个简单的示例数据集,其中包含了房屋面积和对应的房价。

ini 复制代码
import numpy as np

# 生成示例数据
np.random.seed(42)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)

数据可视化

再来可视化一下数据,可以更直观展示关系:

dart 复制代码
import matplotlib.pyplot as plt

plt.scatter(X, y)
plt.xlabel('House Size')
plt.ylabel('Price')
plt.title('House Price vs. Size')
plt.show()

PyTorch构建模型

使用 PyTorch 来构建线性回归模型。

ini 复制代码
import torch
import torch.nn as nn

# 将数据转换为PyTorch张量
X_tensor = torch.from_numpy(X).float()
y_tensor = torch.from_numpy(y).float()

# 定义线性回归模型
class LinearRegression(nn.Module):
    def __init__(self, input_dim, output_dim):
        super(LinearRegression, self).__init__()
        self.linear = nn.Linear(input_dim, output_dim)

    def forward(self, x):
        return self.linear(x)

# 初始化模型
input_dim = 1
output_dim = 1
model = LinearRegression(input_dim, output_dim)

# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

模型训练

然后用数据来训练模型

ini 复制代码
# 定义训练参数
num_epochs = 100

# 训练模型
for epoch in range(num_epochs):
    # 向前传播
    outputs = model(X_tensor)
    loss = criterion(outputs, y_tensor)
    
    # 反向传播和优化
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    
    if (epoch+1) % 10 == 0:
        print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))

可视化结果

scss 复制代码
# 可视化训练结果
predicted = model(X_tensor).detach().numpy()
plt.scatter(X, y, label='Original data')
plt.plot(X, predicted, label='Fitted line', color='red')
plt.xlabel('House Size')
plt.ylabel('Price')
plt.title('House Price vs. Size (Prediction)')
plt.legend()
plt.show()

预测测试

最后,我们就可以用训练好的模型来进行预测了:预测新数据:

lua 复制代码
# 预测新数据
new_house_size = 5
predicted_price = model(torch.tensor([[new_house_size]]).float()).item()
print("Predicted price for a house with size {}: ${:.2f}".format(new_house_size, predicted_price))

运行

上 Pycharm:(咸鱼有1元购破解码)

散点图展示了原始数据

拟合线图新增拟合线

OK,上述代码用PyTorch实现的简单线性回归模型,用于预测房屋价格:

根据一组房屋尺寸和对应价格的数据,然后用散点图展示了数据分布。接着构建了一个线性回归模型,并用训练数据对其进行训练,最小化预测值与真实值的误差。

训练完毕后,将模型预测的房价与原始数据一起绘制在图上,直观地观察模型的拟合效果。

最终用训练好的模型对新的房屋尺寸进行预测,得到其对应的价格;

小结

PyTorch 学习中会有很多如线性回归这样的数学算法图,可以很直观的展示训练结果;数学不愧是科学之王冠。


全面拥抱深度学习~~

文末自荐一下我和机械工业出版社联合出版的 《程序员成长手记》 一书:全书分为3大模块、8个章节:从入门程序员到程序员自驱成长,回归纸质阅读,相信能给你一个更全局的程序员视野,提供成长帮助。京东搜"程序员成长手记":item.jd.com/14356664.ht...*

OK,以上便是本次分享,希望各位喜欢~ 欢迎点赞、收藏、评论 🤟 我是安东尼 🤠 人气技术博主 💥 坚持千日更文 ✍ 关注我,安东尼陪你一起度过漫长编程岁月

相关推荐
楚楚2515 小时前
2026实测:智能体办公平台三周上手真实体验
人工智能
智圣新创015 小时前
教育数据要素流通刚需下 智圣新创高校数据中台解决方案的全域建设落地框架
大数据·人工智能·物联网
xianghongtao01165 小时前
如何选择一台适合你的本地 AI 硬件设备?Lucy AI Studio——从本地 AI 办公到家庭影音的完整指南
人工智能·端脑科技·本地ai硬件设备·kickstarter众筹项目·lucy ai studio·lucy aios
ZhangJun955 小时前
Mobike 共享单车分析项目
人工智能·python·算法·kmeans·聚类·knn
互联网资讯5 小时前
本地创业者入局 AI 短剧,本地化部署怎么选更省钱
大数据·人工智能
唐维康5 小时前
昆工计算机408考研2027招285人,比去年少6人
人工智能·考研·昆明理工大学
Martina_03215 小时前
AI生成的过山车轨道导入后频繁脱轨?用5步检查样条、轨距与碰撞
图像处理·人工智能·游戏·3d·材质·游戏策划·关卡设计
小猴子爱上树5 小时前
跨马翻译:批量图片翻译+视频字幕+智能抠图,跨境电商在线图片翻译工具
大数据·人工智能·python·音视频
佳瑞Jarrett5 小时前
从 0 到 1 手搓 AI 调解训练系统:双 NPC 实时语音 + AI 自动评分(FastAPI + Qwen-Audio Realtime 实战)
人工智能
W***25925 小时前
2026 企业 AI 办公工具怎么选:选型框架与平台全景分析
大数据·人工智能