NumPy 1.14 - numpy.polyfit()

numpy.polyfit




numpy

numpy.polyfit

numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False) [source]

कम से कम वर्ग बहुपद फिट हैं।

एक बहुपद p(x) = p[0] * x**deg + ... + p[deg] को डिग्री deg से पॉइंट्स (x, y) फ़िट करें। गुणांक p का एक वेक्टर लौटाता है जो चुकता त्रुटि को कम करता है।

पैरामीटर:

x : array_like, shape (M,)

एम नमूना बिंदुओं के x- निर्देशांक (x[i], y[i])

y : array_like, shape (M,) या (M, K)

y नमूना बिंदुओं के निर्देशांक। एक ही एक्स-निर्देशांक साझा करने वाले नमूना बिंदुओं के कई डेटा सेट 2 डी-सरणी में पारित करके एक बार में फिट किए जा सकते हैं जिसमें प्रति कॉलम एक डेटासेट होता है।

deg : int

फिटिंग बहुपद की डिग्री

आरकंड : फ्लोट, वैकल्पिक

फिट की सापेक्ष स्थिति संख्या। इस सबसे बड़े एकवचन मान के सापेक्ष छोटे मानों को अनदेखा किया जाएगा। डिफ़ॉल्ट मान len (x) * eps है, जहां eps फ्लोट प्रकार की सापेक्ष परिशुद्धता है, ज्यादातर मामलों में लगभग 2e-16।

पूर्ण : बूल, वैकल्पिक

वापसी मूल्य की प्रकृति का निर्धारण स्विच करें। जब यह गलत है (डिफ़ॉल्ट) सिर्फ गुणांक लौटा दिए जाते हैं, जब एकवचन मान के अपघटन से सही नैदानिक ​​जानकारी भी वापस आ जाती है।

w : array_like, shape (M), वैकल्पिक

नमूना बिंदुओं के y- निर्देशांक पर लागू करने के लिए वजन। गाऊसी अनिश्चितताओं के लिए, 1 / सिग्मा का उपयोग करें (1 / सिग्मा ** 2 नहीं)।

कोव : बूल, वैकल्पिक

अनुमान लौटाएं और अनुमान के सहसंयोजक मैट्रिक्स यदि पूर्ण सत्य है, तो कोव वापस नहीं किया जाता है।

यह दिखाता है:

p : ndarray, आकार (deg + 1), या (deg + 1, K)

बहुपद गुणांक, उच्चतम शक्ति पहले। यदि y 2-D था, तो k -th डेटा सेट के लिए गुणांक p[:,k]

अवशिष्ट, रैंक, एकवचन_कार्य, rcond

केवल full = सत्य होने पर ही प्रस्तुत करें। कम से कम वर्गों के अवशेष फिट होते हैं, स्केल किए गए वैंडर्मोंडे गुणांक मैट्रिक्स के प्रभावी रैंक, इसके विलक्षण मूल्य और rcond के निर्दिष्ट मूल्य। अधिक जानकारी के लिए, linalg.lstsq देखें।

V : ndarray, आकार (M, M) या (M, M, K)

केवल तभी प्रस्तुत करें जब full = गलत और cov`=True. The covariance matrix of the polynomial coefficient estimates. The diagonal of this matrix are the variance estimates for each coefficient. If y is a 2-D array, then the covariance matrix for the `k cov`=True. The covariance matrix of the polynomial coefficient estimates. The diagonal of this matrix are the variance estimates for each coefficient. If y is a 2-D array, then the covariance matrix for the `k cov`=True. The covariance matrix of the polynomial coefficient estimates. The diagonal of this matrix are the variance estimates for each coefficient. If y is a 2-D array, then the covariance matrix for the `k -th डेटा सेट के cov`=True. The covariance matrix of the polynomial coefficient estimates. The diagonal of this matrix are the variance estimates for each coefficient. If y is a 2-D array, then the covariance matrix for the `k V[:,:,k]

चेतावनी देते हैं:

RankWarning

कम से कम वर्ग फिट में गुणांक मैट्रिक्स की रैंक की कमी है। चेतावनी केवल तभी full जब full = गलत।

चेतावनियों को बंद किया जा सकता है

>>> import warnings
>>> warnings.simplefilter('ignore', np.RankWarning)

यह भी देखें

polyval
बहुपद मानों की गणना करें।
linalg.lstsq
एक न्यूनतम वर्ग की गणना करता है।
scipy.interpolate.UnivariateSpline
कंप्यूट फिट बैठता है।

टिप्पणियाँ

समाधान चुकता त्रुटि को कम करता है

E = \ sum_ {j = 0} ^ k | p (x_j) - y_j | ^ 2 |

समीकरणों में:

x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]

गुणांक p का गुणांक मैट्रिक्स एक वैंडर्मेन्डे मैट्रिक्स है।

polyfit एक RankWarning जब कम से कम वर्ग फिट बुरी तरह से वातानुकूलित होता है। तात्पर्य यह है कि संख्यात्मक त्रुटि के कारण सबसे अच्छा फिट को अच्छी तरह से परिभाषित नहीं किया गया है। परिणाम बहुपद डिग्री को कम करके या x - x .mean () द्वारा x को प्रतिस्थापित करके सुधार किया जा सकता है। rcond पैरामीटर को उसके डिफ़ॉल्ट से छोटे मान पर भी सेट किया जा सकता है, लेकिन परिणामी फिट rcond हो सकता है: जिसमें छोटे विलक्षण मानों का योगदान परिणाम में संख्यात्मक शोर जोड़ सकता है।

ध्यान दें कि जब बहुपद की डिग्री बड़ी होती है या नमूना बिंदुओं का अंतराल बुरी तरह से केंद्रित होता है तो बहुपद गुणांक को ढंकना स्वाभाविक रूप से बुरी तरह से वातानुकूलित होता है। इन मामलों में फिट की गुणवत्ता को हमेशा जांचना चाहिए। जब बहुपद फिट संतोषजनक नहीं होते हैं, तो स्प्लिन एक अच्छा विकल्प हो सकता है।

संदर्भ

[R115116] विकिपीडिया, "वक्र फिटिंग", http://en.wikipedia.org/wiki/Curve_fitting
[R116116] विकिपीडिया, "बहुपद प्रक्षेप", http://en.wikipedia.org/wiki/Polynomial_interpolation

उदाहरण

>>> x = np.array([0.0, 1.0, 2.0, 3.0,  4.0,  5.0])
>>> y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
>>> z = np.polyfit(x, y, 3)
>>> z
array([ 0.08703704, -0.81349206,  1.69312169, -0.03968254])

बहुपद से निपटने के लिए poly1d वस्तुओं का उपयोग करना सुविधाजनक है:

>>> p = np.poly1d(z)
>>> p(0.5)
0.6143849206349179
>>> p(3.5)
-0.34732142857143039
>>> p(10)
22.579365079365115

उच्च-क्रम बहुपद बेतहाशा दोलन कर सकते हैं:

>>> p30 = np.poly1d(np.polyfit(x, y, 30))
/... RankWarning: Polyfit may be poorly conditioned...
>>> p30(4)
-0.80000000000000204
>>> p30(5)
-0.99999999999999445
>>> p30(4.5)
-0.10547061179440398

उदाहरण:

>>> import matplotlib.pyplot as plt
>>> xp = np.linspace(-2, 6, 100)
>>> _ = plt.plot(x, y, '.', xp, p(xp), '-', xp, p30(xp), '--')
>>> plt.ylim(-2,2)
(-2, 2)
>>> plt.show()
../../_images/numpy-polyfit-1.png