微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

非线性回归散点图

如何解决非线性回归散点图

我的数据点是:

x = [5.00E-07、1.40E-06、4.10E-06、1.25E-05、3.70E-05、1.11E-04、0.33E-04、1.00E-03]
y = [494.55,333.4666667,333.3333333,333.1,303.4966667,197.7533333,66.43333333,67.715]

我的绘图上的x轴必须​​是指数!!

我想制作一条S形的回归线,例如添加的图像。我该怎么做(在matlab或python中)? IMG 更新:我尝试过

import matplotlib.pyplot as plt     
from scipy.interpolate import make_interp_spline     
import numpy as np     

#create data     
x = np.array([5.00E-07,1.40E-06,4.10E-06,1.25E-05,3.70E-05,1.11E-04,3.33E-04,1.00E-03])     
y= np.array([494.55,333.4666667,333.3333333,333.1,303.4966667,197.7533333,66.43333333,67.715])     

#define x as 200 equally spaced values between the min and max of original x     
xnew = np.linspace(x.min(),x.max(),100)     

#define spline      
spl = make_interp_spline(x,y,k=2)     
y_smooth = spl(xnew)    

#create smooth line chart     
plt.plot(x,'o',xnew,y_smooth)    
plt.xscale("log")    
plt.show()    

我的结果是:results 如何使它更平滑?不同的k并不能使其更好。

解决方法

请注意,您对k参数使用的度数越高,曲线越“摇摆”

根据您希望线的弯曲程度,可以修改k的值。

尝试一下:

import matplotlib.pyplot as plt
from scipy.interpolate import make_interp_spline
import numpy as np

#create data
x = np.array([5.00E-07,1.40E-06,4.10E-06,1.25E-05,3.70E-05,1.11E-04,3.33E-04,1.00E-03])
y= np.array([494.55,333.4666667,333.3333333,333.1,303.4966667,197.7533333,66.43333333,67.715])

#define x as 200 equally spaced values between the min and max of original x 
xnew = np.linspace(x.min(),x.max(),200) 

#define spline
spl = make_interp_spline(x,y,k=3)
y_smooth = spl(xnew)

#create smooth line chart 
plt.plot(xnew,y_smooth)
plt.show()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。