NumPy 1.14 - numpy.polynomial.polynomial.polyfit()

numpy.polynomial.polynomial.polyfit




numpy

numpy.polynomial.polynomial.polyfit

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

डेटा के लियोन-वर्ग एक बहुपद के लिए उपयुक्त हैं।

डिग्री के एक बहुपद के गुणांक को लौटाएं जो कि बिंदु x पर दिए गए डेटा मान y लिए सबसे कम वर्ग है। यदि y 1-D है तो लौटे हुए गुणांक भी 1-D होंगे। यदि y 2-D है तो कई फिट किए जाते हैं, y प्रत्येक कॉलम के लिए एक, और परिणामी गुणांक 2-D रिटर्न के संगत कॉलम में संग्रहीत किए जाते हैं। सज्जित बहुपद (स) रूप में हैं

p (x) = c_0 + c_1 * x + ... + c_n * x ^ n,

जहां n है।

पैरामीटर:

x : array_like, shape ( M ,)

M नमूना (डेटा) अंक (x[i], y[i]) x- निर्देशांक।

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

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

deg : int या 1-D array_like

फिटिंग बहुपद की डिग्री। यदि deg एक पूर्णांक है, तो सभी टर्म और deg टर्म सहित सभी शब्द फिट में शामिल हैं। NumPy संस्करणों के लिए = = 1.11.0 पूर्णांकों की एक सूची निर्दिष्ट करता है, जिसमें शामिल करने के लिए शब्दों की डिग्री निर्दिष्ट की जा सकती है।

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

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

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

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

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

तौल। यदि कोई नहीं है, तो फिट के लिए प्रत्येक बिंदु (x[i],y[i]) का योगदान w[i] द्वारा किया जाता है। आदर्श रूप से वजन को चुना जाता है ताकि उत्पादों की त्रुटियां w[i]*y[i] सभी में एक ही विचरण हो। कोई डिफ़ॉल्ट मान नहीं है।

संस्करण 1.5.0 में नया।

यह दिखाता है:

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

बहुपद गुणांक कम से उच्च करने का आदेश दिया। यदि y 2-D था, तो coef कॉलम k में गुणांक y के k -th कॉलम में डेटा के लिए बहुपद फिट का प्रतिनिधित्व करता है।

[अवशेष, रैंक, एकवचन_लेख, rcond] : सूची

ये मान केवल full = सत्य होने पर वापस किए जाते हैं

रेजिडेंस - कम से कम वर्गों के वर्ग अवशेषों का योग फिट रैंक - स्केल्ड वैंडर्मोंड मैट्रिक्स sv के संख्यात्मक रैंक - स्केल्ड वैंडरमॉन्ड मैट्रिक्स आरसीओंड का विलक्षण मान - rcond का rcond

अधिक जानकारी के लिए, linalg.lstsq देखें।

जन्म देती है:

RankWarning

उठाया अगर कम से कम वर्गों में मैट्रिक्स फिट रैंक की कमी है। चेतावनी केवल तभी full जब full == गलत। चेतावनियों को बंद किया जा सकता है:

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

यह भी देखें

chebfit , legfit , lagfit , hermfit , hermefit

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

टिप्पणियाँ

समाधान बहुपद p के गुणांक है जो भारित चुकता त्रुटियों के योग को कम करता है

E = \ sum_j w_j ^ 2 * | y_j - p (x_j) | ^ 2 |

जहां w_j वजन कर रहे हैं। यह समस्या (आमतौर पर) अति-निर्धारित मैट्रिक्स समीकरण सेट करके हल की जाती है:

V (x) * c = w * y,

जहां V , x का भारित छद्म वैंडमोंड मैट्रिक्स है, c लिए हल किए जाने वाले गुणांक हैं, w भार हैं, और y देखे गए मान हैं। यह समीकरण तब V के एकवचन मान अपघटन का उपयोग करके हल किया जाता है।

यदि V कुछ विलक्षण मान इतने छोटे हैं कि उन्हें उपेक्षित किया जाता है (और full == False ), तो एक RankWarning को उठाया जाएगा। इसका मतलब यह है कि गुणांक मान खराब तरीके से निर्धारित किए जा सकते हैं। निचले क्रम के बहुपद के लिए फिट होने से आमतौर पर चेतावनी से छुटकारा मिल जाएगा (लेकिन वह नहीं हो सकता है जो आप चाहते हैं, निश्चित रूप से; यदि आपके पास काम नहीं करने के लिए डिग्री चुनने का स्वतंत्र कारण है, तो आपको निम्न करना पड़ सकता है: a) उन कारणों पर पुनर्विचार करें, और / या b) आपके डेटा की गुणवत्ता पर पुनर्विचार करें)। rcond पैरामीटर को उसके डिफ़ॉल्ट से छोटे मान पर सेट किया जा सकता है, लेकिन परिणामी फिट rcond हो सकता है और राउंडऑफ़ त्रुटि से बड़ा योगदान हो सकता है।

बहुपद के बारे में (बहुपद) 20 डिग्री पर दोहरी सटीकता का उपयोग करते हुए बहुपद फिट बैठता है। चेबिशेव या लीजेंड्री श्रृंखला का उपयोग करने वाले फिट आम ​​तौर पर बेहतर स्थिति में होते हैं, लेकिन अभी भी नमूना बिंदुओं के वितरण और डेटा की चिकनाई पर निर्भर कर सकते हैं। यदि फिट की गुणवत्ता अपर्याप्त है, तो स्प्लिन एक अच्छा विकल्प हो सकता है।

उदाहरण

>>> from numpy.polynomial import polynomial as P
>>> x = np.linspace(-1,1,51) # x "data": [-1, -0.96, ..., 0.96, 1]
>>> y = x**3 - x + np.random.randn(len(x)) # x^3 - x + N(0,1) "noise"
>>> c, stats = P.polyfit(x,y,3,full=True)
>>> c # c[0], c[2] should be approx. 0, c[1] approx. -1, c[3] approx. 1
array([ 0.01909725, -1.30598256, -0.00577963,  1.02644286])
>>> stats # note the large SSR, explaining the rather poor results
[array([ 38.06116253]), 4, array([ 1.38446749,  1.32119158,  0.50443316,
0.28853036]), 1.1324274851176597e-014]

जोड़ा शोर के बिना एक ही बात

>>> y = x**3 - x
>>> c, stats = P.polyfit(x,y,3,full=True)
>>> c # c[0], c[2] should be "very close to 0", c[1] ~= -1, c[3] ~= 1
array([ -1.73362882e-17,  -1.00000000e+00,  -2.67471909e-16,
         1.00000000e+00])
>>> stats # note the minuscule SSR
[array([  7.46346754e-31]), 4, array([ 1.38446749,  1.32119158,
0.50443316,  0.28853036]), 1.1324274851176597e-014]