डेटा बिंदुओं के दिए गए सेट से, रैखिक प्रतिगमन एक सीधी रेखा का समीकरण ढूंढता है। दिए गए बिंदु सीधी रेखा का अनुसरण करेंगे। इस सूत्र का उपयोग करके, हम अनुमान लगा सकते हैं कि किसी अन्य विशिष्ट बिंदु का मान क्या होगा, जो वर्तमान में सेट में मौजूद नहीं है।
कुछ डेटा बिंदुओं का उपयोग करके रैखिक प्रतिगमन समस्याओं को हल करने के लिए, हमें इन सूत्रों का पालन करना होगा:
यहाँ m और c क्रमशः ढाल और y-अवरोधन हैं। इन व्यंजकों का उपयोग करके, हम इस रूप में सीधी रेखा का समीकरण प्राप्त कर सकते हैं:=𝑚𝑥 + .
इनपुट और आउटपुट
Input: The (x, y) coordinates of some points. {(1,3), (2,4), (3,5), (4,6), (5,8)} Output: The slope: 1.2 The Intercept: 1.6 The equation: y = 1.2x + 1.6
एल्गोरिदम
linReg(coord)
इनपुट: निर्देशांक बिंदुओं का दिया गया सेट।
आउटपुट: ढलान m और y-अवरोध c.
Begin for i := 1 to n, do sumX := sumX + coord[i,0] sumY := sumY + coord[i,1] sumXsq := sumXsq + (coord[i,0]*coord[i,0]) sumXY := sumXY + (coord[i,0] * coord[i,1]) done m := (n * sumXY – (sumX*sumY)) / (n * sumXsq – (sumX * sumX)) c := (sumY / n) – (m * sumX)/n End
उदाहरण
#include<iostream> #include<cmath> #define N 5 using namespace std; void linReg(int coord[N][2], float &m, float &c) { float sx2 = 0, sx = 0, sxy = 0, sy = 0; for(int i = 0; i<N; i++) { sx += coord[i][0]; //sum of x sy += coord[i][1]; //sum of y sx2 += coord[i][0]*coord[i][0]; //sum of x^2 sxy += coord[i][0]*coord[i][1]; //sum of x*y } // finding slope and intercept m = (N*sxy-(sx*sy))/(N*sx2-(sx*sx)); c = (sy/N)-(m*sx)/N; } main() { // this 2d array holds coordinate points int point[N][2] = {{1,3},{2,4},{3,5},{4,6},{5,8}}; float m, c; linReg(point, m, c); cout << "The slope: " << m << " The Intercept: " << c << endl; cout << "The equation: " << "y = "<< m <<"x + "<< c; }
आउटपुट
The slope: 1.2 The Intercept: 1.6 The equation: y = 1.2x + 1.6