python最小二乘和神经网络拟合曲线比较

本文探讨了在Python中使用SciPy的leastsq函数进行最小二乘拟合和利用神经网络对加噪直线进行拟合的区别。最小二乘法需要指定初始值,而神经网络模型更具灵活性,但也可能导致过拟合或欠拟合问题。实验中,神经网络采用了1层隐层和4个节点。
摘要由CSDN通过智能技术生成

最近在学深度学习,涉及到神经网络。python里SciPy包中模块optimize的函数leastsq具有自动求解最小二乘解的能力,用它对形如y=kx+b的加噪直线进行拟合,须指定1个初始值,代码如下:

#%% In[ ]:
import numpy as np
from scipy.optimize import leastsq
import matplotlib.pyplot as plt
import random

X=np.linspace(0,10,50)
k0=random.random()
b0=random.random()
Y=k0*X+b0+np.random.randn(50)
#%% Optimize

def residuals(p,x,y_):
    k,b=p
    return y_-(k*x+b)
r=leastsq(residuals,[1,0],args=(X,Y))
#%% Test
k,b=r[0]
Yy=k*X+b
plt.plot(X,Y,X,Yy)
plt.show()

拟合结果:



但如果用神经网络,不需要固定模型的函数,但网络本身也是模型,节点、层数多了可能产生过拟合,少了可能欠拟合。这里采用1层隐层,4节点,代码:

import tensorflow as tf    
import numpy as np
import random
import matplotlib.pyplot as plt

X=np.linsp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值