NumPy 1.14 - numpy.linalg.lstsq()

numpy.linalg.lstsq




numpy

numpy.linalg.lstsq

numpy.linalg.lstsq(a, b, rcond='warn') [source]

रैखिक मैट्रिक्स समीकरण के लिए सबसे कम-वर्ग समाधान लौटें।

एक वेक्टर x गणना करके समीकरण ax = b को हल करता है जो यूक्लिडियन 2-मानक को कम करता है || b - ax ||^2 || b - ax ||^2 समीकरण निम्न के अनुसार हो सकता है, अच्छी तरह से, या अधिक-निर्धारित (यानी, कैन की रैखिक स्वतंत्र पंक्तियों की संख्या, रैखिक रूप से स्वतंत्र स्तंभों की संख्या की तुलना में कम, बराबर या अधिक हो सकती है)। यदि a वर्ग और पूर्ण रैंक का है, तो x (लेकिन राउंड-ऑफ त्रुटि के लिए) समीकरण का "सटीक" समाधान है।

पैरामीटर:

a : (M, N) array_like

"गुणांक" मैट्रिक्स।

b : {(M), (M, K)} array_like

साधारण या "आश्रित चर" मान। यदि b द्वि-आयामी है, तो b के प्रत्येक कॉलम के लिए सबसे कम-वर्ग समाधान की गणना की जाती है।

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

a छोटे विलक्षण मूल्यों के लिए कट-ऑफ अनुपात। रैंक निर्धारण के प्रयोजनों के लिए, एकवचन मानों को शून्य के रूप में माना जाता है, यदि वे rcond से छोटे हैं, rcond कि सबसे बड़ा एकवचन मान a

संस्करण 1.14.0 में बदला गया: यदि सेट नहीं किया जाता है, तो FutureWarning दिया जाता है। -1 का पिछला डिफ़ॉल्ट मशीन परिशुद्धता का उपयोग rcond पैरामीटर के रूप में करेगा, नया डिफ़ॉल्ट मशीन सटीक समय max(M, N) उपयोग करेगा। चेतावनी को शांत करने और नए डिफ़ॉल्ट का उपयोग करने के लिए, पुराने व्यवहार का उपयोग करने के लिए, rcond=-1 उपयोग करें, rcond=-1 उपयोग करें।

यह दिखाता है:

x : {(एन), (एन, के)} ndarray

कम से कम वर्गों का समाधान। यदि b द्वि-आयामी है, तो समाधान x के K कॉलम में हैं।

अवशिष्ट : {(1,), (के,), (0,)} ndarray

अवशेषों की रकम; b - a*x में प्रत्येक स्तंभ के लिए चुकता यूक्लिडियन 2-मानक b - a*x । यदि a का पद <N या M <= N है, तो यह एक खाली सरणी है। यदि b 1-आयामी है, तो यह एक (1) आकार का सरणी है। अन्यथा आकृति है (के,)।

रैंक : int

मैट्रिक्स की रैंक a

s : (मिन (एम, एन),) ndarray

एक के विलक्षण मूल्य।

जन्म देती है:

LinAlgError

यदि अभिकलन अभिसरण नहीं करता है।

टिप्पणियाँ

यदि b एक मैट्रिक्स है, तो सभी सरणी परिणाम मैट्रिक्स के रूप में वापस आ जाते हैं।

उदाहरण

कुछ शोर डेटा बिंदुओं के माध्यम से एक पंक्ति, y = mx + c फ़िट करें:

>>> x = np.array([0, 1, 2, 3])
>>> y = np.array([-1, 0.2, 0.9, 2.1])

गुणांक की जांच करके, हम देखते हैं कि रेखा में लगभग 1 का ढाल होना चाहिए और y- अक्ष को कम या ज्यादा, -1 पर काटना चाहिए।

हम y = Ap रूप में लाइन समीकरण को फिर से लिख सकते हैं, जहां A = [[x 1]] और p = [[m], [c]] । अब p लिए हल करने के लिए lstsq का उपयोग करें:

>>> A = np.vstack([x, np.ones(len(x))]).T
>>> A
array([[ 0.,  1.],
       [ 1.,  1.],
       [ 2.,  1.],
       [ 3.,  1.]])
>>> m, c = np.linalg.lstsq(A, y)[0]
>>> print(m, c)
1.0 -0.95

फिट लाइन के साथ डेटा प्लॉट करें:

>>> import matplotlib.pyplot as plt
>>> plt.plot(x, y, 'o', label='Original data', markersize=10)
>>> plt.plot(x, m*x + c, 'r', label='Fitted line')
>>> plt.legend()
>>> plt.show()
../../_images/numpy-linalg-lstsq-1.png