पायथन में बहुपद प्रतिगमन कैसे करें
प्रतिगमन विश्लेषण का उपयोग एक या अधिक व्याख्यात्मक चर और एक प्रतिक्रिया चर के बीच संबंध को मापने के लिए किया जाता है।
प्रतिगमन विश्लेषण का सबसे आम प्रकार सरल रैखिक प्रतिगमन है, जिसका उपयोग तब किया जाता है जब एक भविष्यवक्ता चर और एक प्रतिक्रिया चर के बीच एक रैखिक संबंध होता है।
हालाँकि, कभी-कभी भविष्यवक्ता चर और प्रतिक्रिया चर के बीच का संबंध अरेखीय होता है।
उदाहरण के लिए, सच्चा संबंध द्विघात हो सकता है:
या यह घन हो सकता है:
इन मामलों में, बहुपद प्रतिगमन का उपयोग करना समझ में आता है, जो चर के बीच गैर-रेखीय संबंध के लिए जिम्मेदार हो सकता है।
यह ट्यूटोरियल बताता है कि पायथन में बहुपद प्रतिगमन कैसे करें।
उदाहरण: पायथन में बहुपद प्रतिगमन
मान लीजिए कि हमारे पास पायथन में निम्नलिखित भविष्यवक्ता चर (x) और प्रतिक्रिया चर (y) हैं:
x = [2, 3, 4, 5, 6, 7, 7, 8, 9, 11, 12] y = [18, 16, 15, 17, 20, 23, 25, 28, 31, 30, 29]
यदि हम इस डेटा का एक सरल स्कैटरप्लॉट बनाते हैं, तो हम देख सकते हैं कि x और y के बीच संबंध स्पष्ट रूप से रैखिक नहीं है:
import matplotlib.pyplot as plt #create scatterplot plt.scatter(x, y)
इसलिए इस डेटा में एक रेखीय प्रतिगमन मॉडल को फिट करने का कोई मतलब नहीं होगा। इसके बजाय, हम numpy.polyfit() फ़ंक्शन का उपयोग करके डिग्री 3 के साथ एक बहुपद प्रतिगमन मॉडल को फिट करने का प्रयास कर सकते हैं:
import numpy as np #polynomial fit with degree = 3 model = np.poly1d(np.polyfit(x, y, 3)) #add fitted polynomial line to scatterplot polyline = np.linspace(1, 12, 50) plt.scatter(x, y) plt.plot(polyline, model(polyline)) plt.show()
हम मॉडल गुणांकों को प्रिंट करके फिट किए गए बहुपद प्रतिगमन समीकरण प्राप्त कर सकते हैं:
print(model) poly1d([ -0.10889554, 2.25592957, -11.83877127, 33.62640038])
फिट किए गए बहुपद प्रतिगमन समीकरण है:
y = -0.109x 3 + 2.256x 2 – 11.839x + 33.626
इस समीकरण का उपयोग व्याख्यात्मक चर के दिए गए मान को देखते हुए प्रतिक्रिया चर के अपेक्षित मूल्य को खोजने के लिए किया जा सकता है।
उदाहरण के लिए, मान लें x = 4. प्रतिक्रिया चर, y के लिए अपेक्षित मान होगा:
y = -0.109(4) 3 + 2.256(4) 2 – 11.839(4) + 33.626= 15.39 ।
हम मॉडल का आर-वर्ग प्राप्त करने के लिए एक छोटा फ़ंक्शन भी लिख सकते हैं, जो प्रतिक्रिया चर में भिन्नता का अनुपात है जिसे भविष्यवक्ता चर द्वारा समझाया जा सकता है।
#define function to calculate r-squared def polyfit(x, y, degree): results = {} coeffs = numpy.polyfit(x, y, degree) p = numpy.poly1d(coeffs) #calculate r-squared yhat = p(x) ybar = numpy.sum(y)/len(y) ssreg = numpy.sum((yhat-ybar)**2) sstot = numpy.sum((y - ybar)**2) results['r_squared'] = ssreg / sstot return results #find r-squared of polynomial model with degree = 3 polyfit(x, y, 3) {'r_squared': 0.9841113454245183}
इस उदाहरण में, मॉडल का आर वर्ग 0.9841 है।
इसका मतलब यह है कि प्रतिक्रिया चर में 98.41% भिन्नता को भविष्यवक्ता चर द्वारा समझाया जा सकता है।