【问题标题】:non linear regression scatter plot非线性回归散点图
【发布时间】:2021-01-28 20:58:02
【问题描述】:

我的数据点是:

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,y, 'o', xnew, y_smooth)    
plt.xscale("log")    
plt.show()    

我的结果是:results 我怎样才能使它更平滑?不同的 k 并不能使它变得更好。

【问题讨论】:

  • 您在代码中所做的是插值,而不是回归。
  • 查看我的编辑。我认为最好的方法是插值 log(x) 并绘制 y vs log(x)

标签: python matlab plot regression scatter


【解决方案1】:

请注意,用于 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-27
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    相关资源
    最近更新 更多