[Python] Lineare Regression implementiert Beispiele in Python (Referenz)

Lineare Regression realisiert Beispiele in Python (Referenz)

Einfache lineare Regression

Python ein einfaches Beispiel für die lineare Regression zu implementieren.

Die beiden folgenden Annahmen sind linear abhängigen Variablen. So haben wir versucht, eine lineare Funktion, in Reaktion auf den vorhergesagten Wert (y) so genau wie möglich ist, oder als eine charakteristische unabhängige Variable (x) Funktion zu finden.

x 0 1 2 3 4 5 6 7 8 9
und 1 3 2 5 7 8 8 9 10 12

Im Allgemeinen definieren wir:

als Merkmalsvektor x, das heißt x = [x_1, x_2, ..., x_n],

y ist der Antwortvektor, das heißt, y = [y_1, y_2, ..., y_n]

Für n Beobachtungen (in dem obigen Beispiel, n = 10).

Implementiert in Python Scattergramm genannten Datensatzes.


# -*- coding: utf-8 -*-
"""
Created on Thu Mar 26 18:48:49 2020

@author: Bean029
"""

import numpy as np 
import matplotlib.pyplot as plt 
  
def estimate_coef(x, y): 
    # number of observations/points 
    n = np.size(x) 
  
    # mean of x and y vector 
    m_x, m_y = np.mean(x), np.mean(y) 
  
    # calculating cross-deviation and deviation about x 
    SS_xy = np.sum(y*x) - n*m_y*m_x 
    SS_xx = np.sum(x*x) - n*m_x*m_x 
  
    # calculating regression coefficients 
    b_1 = SS_xy / SS_xx 
    b_0 = m_y - b_1*m_x 
  
    return(b_0, b_1) 
  
def plot_regression_line(x, y, b): 
    # plotting the actual points as scatter plot 
    plt.scatter(x, y, color = "m", 
               marker = "o", s = 30) 
  
    # predicted response vector 
    y_pred = b[0] + b[1]*x 
  
    # plotting the regression line 
    plt.plot(x, y_pred, color = "g") 
  
    # putting labels 
    plt.xlabel('x') 
    plt.ylabel('y') 
  
    # function to show plot 
    plt.show() 
  
def main(): 
    # observations 
    x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
    y = np.array([1, 3, 2, 5, 7, 8, 8, 9, 10, 12]) 
  
    # estimating coefficients 
    b = estimate_coef(x, y) 
    print("Estimated coefficients:\nb_0 = {}  \nb_1 = {}".format(b[0], b[1])) 
  
    # plotting regression line 
    plot_regression_line(x, y, b) 
  
if __name__ == "__main__": 
    main() 

Scattergramm wie folgt hergestellt:

Jetzt ist unsere Aufgabe ist es, die am besten geeignete Linie über dem Streudiagramm zu finden, so dass wir die Antwort auf alle neuen Kennwerte vorhersagen kann. (Das heißt, wird der Datensatz keinen Wert x vorhanden sein)

Diese Linie wird die Regressionslinie genannt.


Multiple lineare Regression

Multiple lineare Regression Versuch durch eine lineare Gleichung zu beobachteten Datenanpassung, die die Ansprechcharakteristiken und die Beziehung zwischen zwei oder mehr zu simulieren.

Offensichtlich ist dies nur eine Erweiterung der einfachen linearen Regression.

Betrachten wir ein p Funktionen (oder Argument) und eine Antwort (oder abhängige Variable) Datensatz hat.

Weiterhin setzen die Daten weiter umfasst n Zeilen / Beobachtungen.

# -*- coding: utf-8 -*-
"""
Created on Thu Mar 26 18:53:13 2020

@author: Bean029
"""

import matplotlib.pyplot as plt 
import numpy as np 
from sklearn import datasets, linear_model, metrics 
  
# load the boston dataset 
boston = datasets.load_boston(return_X_y=False) 
  
# defining feature matrix(X) and response vector(y) 
X = boston.data 
y = boston.target 
  
# splitting X and y into training and testing sets 
from sklearn.model_selection import train_test_split 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, 
                                                    random_state=1) 
  
# create linear regression object 
reg = linear_model.LinearRegression() 
  
# train the model using the training sets 
reg.fit(X_train, y_train) 
  
# regression coefficients 
print('Coefficients: \n', reg.coef_) 
  
# variance score: 1 means perfect prediction 
print('Variance score: {}'.format(reg.score(X_test, y_test))) 
  
# plot for residual error 
  
## setting plot style 
plt.style.use('fivethirtyeight') 
  
## plotting residual errors in training data 
plt.scatter(reg.predict(X_train), reg.predict(X_train) - y_train, 
            color = "red", s = 10, label = 'Train data') 
  
## plotting residual errors in test data 
plt.scatter(reg.predict(X_test), reg.predict(X_test) - y_test, 
            color = "blue", s = 10, label = 'Test data') 
  
## plotting line for zero residual error 
plt.hlines(y = 0, xmin = 0, xmax = 50, linewidth = 2) 
  
## plotting legend 
plt.legend(loc = 'upper right') 
  
## plot title 
plt.title("Residual errors") 
  
## function to show plot 
plt.show() 

 Nach dem Ergebnis des Programms:

 

Veröffentlicht 619 Originalarbeiten · erntete Lob 185 · Ansichten 660 000 +

Ich denke du magst

Origin blog.csdn.net/seagal890/article/details/105125566
Empfohlen
Rangfolge