Voraussetzung: NumPy 

Betrachten Sie einen Datensatz,

Fläche (x 1 )Zimmer (x 2 )Alter (x 3 )Preis (y)
23386562
fünfzehn274569
24496897
29547562
31768234
253107485

lass uns in Erwägung ziehen, 

Hier sind Fläche, Zimmer, Alter Merkmale / unabhängige Variablen und Preis ist die Ziel- / abhängige Variable. Wie wir wissen, ist die Hypothese für die multiple lineare Regression gegeben durch: 

$h_{\theta}(x)=\theta_{0} x_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}+\ldots+\theta_{n} x_{n}$
Parameters: $\theta=\left\{\theta_{0}, \theta_{1}, \theta_{2}, \ldots \theta_{n}\right\}$\\ Features: $x=\left\{x_{0}, x_{1}, x_{2}, \ldots x_{n}\right\}$

wo,$x_{0} = 1$

HINWEIS: Hier ist unser Ziel, den optimalen Wert für die Parameter θ zu finden. Um den optimalen Wert für θ zu finden, können wir die Normalgleichung verwenden. Nachdem wir also die Werte für θ gefunden haben, ist unsere lineare Hypothese oder unser lineares Modell bereit, den Preis für neue Funktionen oder Eingaben vorherzusagen.

Normale Gleichung ist:

$\theta=\left(X^{T} X\right)^{-1} X^{\mathrm{T}} y$

Unter Berücksichtigung des obigen Datensatzes können wir schreiben,

X: ein Array aller unabhängigen Merkmale mit der Größe ( nxm ), wobei m die Gesamtzahl der Trainingsgebiete und n die Gesamtzahl der Merkmale einschließlich (x 0 = 1) ist.

X T: Transponieren von Array X

y: y ist ein 1D-Array/Spalten-Array/Vektor des Ziels/der abhängigen Variablen mit der Größe m , wobei m die Gesamtzahl der Trainingsbeispiele ist.

Für das obige Beispiel können wir also schreiben:

X = [[ 1, 23, 3, 8],

         [ 1, 15, 2, 7],

         [ 1, 24, 4, 9],

         [ 1, 29, 5, 4],

         [ 1, 31, 7, 6],

         [ 1, 25, 3, 10]]

X T = [[ 1, 1, 1, 1, 1, 1],

          [23, 15, 24, 29, 31, 25],

          [ 3, 2, 4, 5, 7, 3],

          [ 8, 7, 9, 4, 6, 10]]

y= [6562, 4569, 6897, 7562, 8234, 7485]

Code: Implementierung des linearen Regressionsmodells mit Normalgleichung

Python

import numpy as np
  
class LinearRegression:
    def __init__(self):
        pass
  
    def __compute(self, x, y):
        try:
            '''
            # multiline code
            var = np.dot(x.T,x)
            var = np.linalg.inv(var)
            var = np.dot(var,x.T)
            var = np.dot(var,y)
            self.__thetas = var
            '''
            # one line code
            self.__thetas = np.dot(np.dot(np.linalg.inv(np.dot(x.T,x)),x.T),y)
        except Exception as e:
            raise e
          
    def fit(self, x, y):
        x = np.array(x)
        ones_ = np.ones(x.shape[0])
        x = np.c_[ones_,x]
        y = np.array(y)
        self.__compute(x,y)
  
    @property
    def coef_(self):
        return self.__thetas[0]
  
    @property
    def intercept_(self):
        return self.__thetas[1:]
  
    def predict(self, x):
        try:
            x = np.array(x)
            ones_ = np.ones(x.shape[0])
            x = np.c_[ones_,x]
            result = np.dot(x,self.__thetas)
            return result            
        except Exception as e:
            raise e
  
# testing of code...
  
# datasets
x_train = [[2,40],[5,15],[8,19],[7,25],[9,16]]
y_train = [194.4, 85.5, 107.1, 132.9, 94.8]
x_test = [[12,32],[2,40]]
y_test = []
  
# testing the model...
lr = LinearRegression()
lr.fit(x,y)
print(lr.coef_,lr.intercept_)
print(lr.predict(x_t))

Ausgabe :

Wert des Abschnitts = 305,3333333334813  

Koeffizienten sind = [236,85714286 -4,76190476 102,9047619 ]

Tatsächlicher Wert der Testdaten = [8234, 7485]

Vorhergesagter Wert der Testdaten = [8232. 7241.52380952]

Falls Sie an Live-Kursen mit Experten teilnehmen möchten , beziehen Sie sich bitte auf DSA Live-Kurse für Berufstätige und Competitive Programming Live for Students .