簡體   English   中英

非線性回歸散點圖

[英]non linear regression scatter plot

我的數據點是:

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()    

我的結果是:結果我怎樣才能讓它更順暢? 不同的 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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM