Multiples lineares Regressionsmodell mit Normalgleichung
Voraussetzung: NumPy
Betrachten Sie einen Datensatz,
Fläche (x 1 ) | Zimmer (x 2 ) | Alter (x 3 ) | Preis (y) |
23 | 3 | 8 | 6562 |
fünfzehn | 2 | 7 | 4569 |
24 | 4 | 9 | 6897 |
29 | 5 | 4 | 7562 |
31 | 7 | 6 | 8234 |
25 | 3 | 10 | 7485 |
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:
wo,
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:
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 .