加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

python如何用pytorch做多项式回归?

发布时间:2022-04-07 15:36:00 所属栏目:语言 来源:互联网
导读:pytorch是一个python优先的深度学习框架,用于自然语言应用程序,为了让大家了解pytorch的使用,下面给大家分享使用pytorch实现多项式回归的方法,有这方面学习需要的朋友可以参考学习。 一元线性回归模型虽然能拟合出一条直线,但精度依然欠佳,拟合的直线
        pytorch是一个python优先的深度学习框架,用于自然语言应用程序,为了让大家了解pytorch的使用,下面给大家分享使用pytorch实现多项式回归的方法,有这方面学习需要的朋友可以参考学习。
 
        一元线性回归模型虽然能拟合出一条直线,但精度依然欠佳,拟合的直线并不能穿过每个点,对于复杂的拟合任务需要多项式回归拟合,提高精度。多项式回归拟合就是将特征的次数提高,线性回归的次数使一次的,实际我们可以使用二次、三次、四次甚至更高的次数进行拟合。由于模型的复杂度增加会带来过拟合的风险,因此需要采取正则化损失的方式减少过拟合,提高模型泛化能力。希望大家可以自己动手,通过一些小的训练掌握pytorch(案例中有些观察数据格式的代码,大家可以自己注释掉)
 
# 相较于一元线性回归模型,多项式回归可以很好的提高拟合精度,但要注意过拟合风险
# 多项式回归方程 f(x) = -1.13x-2.14x^2+3.12x^3-0.01x^4+0.512
import torch
import matplotlib.pyplot as plt
import numpy as np
# 数据准备(测试数据)
x = torch.linspace(-2,2,50)
print(x.shape)
y = -1.13*x - 2.14*torch.pow(x,2) + 3.15*torch.pow(x,3) - 0.01*torch.pow(x,4) + 0.512
plt.scatter(x.data.numpy(),y.data.numpy())
plt.show()
 
# 此时输入维度为4维
# 为了拼接输入数据,需要编写辅助数据,输入标量x,使其变为矩阵,使用torch.cat拼接
def features(x): # 生成矩阵
    # [x,x^2,x^3,x^4]
    x = x.unsqueeze(1)
    print(x.shape)
    return torch.cat([x ** i for i in range(1,5)], 1)
result = features(x)
print(result.shape)
# 目标公式用于计算输入特征对应的标准输出
# 目标公式的权重如下
x_weight = torch.Tensor([-1.13,-2.14,3.15,-0.01]).unsqueeze(1)
b = torch.Tensor([0.512])
# 得到x数据对应的标准输出
def target(x):
    return x.mm(x_weight) + b.item()
 
# 开始训练模型
epochs = 10000
batch_size = 32
model = PolynomialRegression()
criterion = torch.nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(),0.001)

(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读