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

यहाँ m और c क्रमशः ढलान और y-अवरोधन हैं। इन व्यंजकों का उपयोग करके, हम सीधी रेखा का समीकरण इस रूप में प्राप्त कर सकते हैं: y = mx + c।
इनपुट और आउटपुट
इनपुट: कुछ बिंदुओं के (x, y) निर्देशांक। {(1,3), (2,4), (3,5), (4,6), (5,8)}
आउटपुट: ढलान: 1.2, अवरोधन: 1.6, समीकरण: y = 1.2x + 1.6
एल्गोरिदम
linReg(coord)
इनपुट: दी गई निर्देशांक बिंदुओं का सेट
आउटपुट: ढलान m और y-अवरोधन c
Begin
i := 1 से n तक, करें
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
उदाहरण (C++ कोड)
#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]; // x का योग
sy += coord[i][1]; // y का योग
sx2 += coord[i][0] * coord[i][0]; // x^2 का योग
sxy += coord[i][0] * coord[i][1]; // x*y का योग
}
// ढलान और अवरोधन ज्ञात करना
m = (N * sxy - (sx * sy)) / (N * sx2 - (sx * sx));
c = (sy / N) - (m * sx) / N;
}
int main() {
// यह 2D सरणी निर्देशांक बिंदुओं को धारण करती है
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