डेटा सेट में गाऊशियन फ़ंक्शन को फिट करने के कई तरीके हैं। डेटा को फ़िट करते समय मैं अक्सर एस्ट्रॉपी का उपयोग करता हूं, इसलिए मैं इसे अतिरिक्त उत्तर के रूप में जोड़ना चाहता था।
import numpy as np
from astropy import modeling
m = modeling.models.Gaussian1D(amplitude=10, mean=30, stddev=5)
x = np.linspace(0, 100, 2000)
data = m(x)
data = data + np.sqrt(data) * np.random.random(x.size) - 0.5
data -= data.min()
plt.plot(x, data)
फिर फिटिंग यह वास्तव में काफी आसान है, आप एक मॉडल है कि आप डेटा को फिट करने के लिए चाहते हैं निर्दिष्ट करें:
मैं कुछ डेटा सेट है कि कुछ शोर के साथ एक गाऊसी अनुकरण करना चाहिए का उपयोग और एक फिटर:
fitter = modeling.fitting.LevMarLSQFitter()
model = modeling.models.Gaussian1D() # depending on the data you need to give some initial values
fitted_model = fitter(model, x, data)
और साजिश रची:
plt.plot(x, data)
plt.plot(x, fitted_model(x))
हालांकि आप भी सिर्फ SciPy उपयोग कर सकते हैं, लेकिन आप अपने आप को समारोह को परिभाषित करने के लिए है:
from scipy import optimize
def gaussian(x, amplitude, mean, stddev):
return amplitude * np.exp(-((x - mean)/4/stddev)**2)
popt, _ = optimize.curve_fit(gaussian, x, data)
यह फिट करने के लिए इष्टतम तर्क देता है और आप इसे इस तरह से प्लॉट कर सकते हैं :
plt.plot(x, data)
plt.plot(x, gaussian(x, *popt))
और मैं इस फिट गाऊस को देखने के लिए क्या प्लॉट करूंगा? –
@ पी। कौर मेरा अद्यतन उत्तर –