非线性回归的原理与实现

1.激活函数:激活函数是为了让神经网络可以拟合复杂的非线性函数,比如torch.nn.functional.relu()

2.人工神经网络是多层人工神经元组成的网络结构,输入层,隐含层,输出层

3,隐含层大于2的神经网络,都可以叫深度神经网络。

import torch
import matplotlib.pyplot as plt
from time import perf_counter
# 增加一个维度100000行1列
x = torch.unsqueeze(torch.linspace(-3,3,100000),dim=1)
y = x.pow(3) + 0.3*torch.rand(x.size())
plt.scatter(x.numpy(),y.numpy(),s=0.01)
plt.show()

# 继承nn.module构建一个net
from torch import nn,optim
import torch.nn.functional as Func

class Net(nn.Module):
    def __init__(self, input_feature, num_hidden, outputs):
        super(Net,self).__init__()
        # 创建了输入特征到隐藏层的线性变换
        self.hidden = nn.Linear(input_feature,num_hidden)
        # 创建了隐藏层到输出层的线性变换
        self.out = nn.Linear(num_hidden,outputs)

    def forward(self, x):
        # 对输入数据 x 进行隐藏层的线性变换,并经过 ReLU
        x = Func.relu(self.hidden(x))
        # 表示将数据 x 通过输出层的线性变换
        x = self.out(x)
        return x


CUDA = torch.cuda.is_available()
if CUDA:
    net = Net(input_feature=1, num_hidden=20, outputs=1).cuda()
    inputs = x.cuda()
    target = y.cuda()
else:
    net = Net(input_feature=1, num_hidden=20, outputs=1)
    inputs = x
    target = y

criterion = nn.MSELoss()
optimizer = optim.SGD(net.parameters(),lr=1e-2)

def Train(model,criterion,optimizer,epochs):
    for epochs in range(epochs):

        output = model(inputs)
        loss = criterion(output,target)

        optimizer.zero_grad()
        loss.backward()

        optimizer.step() #权重更新
        if epochs % 80 == 0:
            draw(output,loss)
    return model,loss

def draw(output,loss):
    if CUDA:
        output = output.cpu()
    # 清空画布
    plt.cla()
    plt.scatter(x.numpy(), y.numpy())
    plt.plot(x.numpy(),output.data.numpy(),'r-',lw=5)
    plt.text(0.5,0,'loss=%s'%(loss.item()),fontdict={'size':20,'color':'red'})
    plt.pause(0.005)

# 训练

START = perf_counter()
net,loss = Train(net,criterion,optimizer,10000)
FINISH = perf_counter()
time = FINISH - START
print("time:%s" % time)
print("loss:",loss.item())
print("weights:",list(net.parameters()))

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Python中进行非线性回归时,可以利用三角函数来建模数据。可以使用NumPy库中的sin()、cos()、tan()等函数来创建三角函数的特征。具体步骤如下: 1. 导入所需的库:首先,需要导入NumPy库来进行数值计算和创建三角函数特征。可以使用以下代码导入库: ``` import numpy as np ``` 2. 准备数据:准备包含自变量和因变量的数据集。 3. 创建三角函数特征:使用NumPy库的三角函数函数(如sin()、cos()、tan())来创建三角函数特征。可以根据需要选择适当的三角函数。 4. 构建模型:使用回归算法(如线性回归、多项式回归)来构建非线性回归模型。可以使用scikit-learn库中的线性回归模型或多项式回归模型来实现。 ``` from sklearn.linear_model import LinearRegression ``` 或 ``` from sklearn.preprocessing import PolynomialFeatures ``` 5. 训练模型:将数据集拟合到模型中,以获取最佳的参数。 6. 预测:使用训练好的模型来进行预测未知数据的类别。 请注意,以上只是非线性回归中使用三角函数的一种方法,具体的实现取决于数据集的特征和需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [机器学习笔记-线性回归非线性回归](https://blog.csdn.net/m0_56615545/article/details/128054414)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [[数值计算-15]:函数近似值的线性与非线性拟合的原理与Python代码示例](https://blog.csdn.net/HiWangWenBing/article/details/119973082)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值