Dieser Artikel wurde vom Autor https://www.udemy.com/share/1013lqB0AedFdUR34=0 verfasst Der Zweck ist zu überprüfen, was ich gelernt habe
Angenommen, Sie erhalten einen Datensatz [x, y]. x ist die erklärende Variable und y ist die Zielvariable. Wenn beispielsweise die Größe zunimmt, nimmt auch das Gewicht zu, in diesem Fall also x = Größe und y = Gewicht.
Und ich möchte y aus den gegebenen Daten x vorhersagen. Der vorhergesagte Wert zu diesem Zeitpunkt sei $ \ hat {y} $ und nehme den folgenden relationalen Ausdruck an.
\hat{y} = ax + b
Hier ist das Ziel, $ \ hat {y} $ so nah wie möglich an den richtigen Antwortwert $ y $ zu bringen. Deshalb
Error = y - \hat{y} = y - ax + b =0
Es ist wichtig, a und b zu finden. Die folgenden Erklärungen finden Sie unter den folgenden Links. http://arduinopid.web.fc2.com/P7.html
Importieren Sie zuerst das Modul
python
import pandas as pd
from pandas import Series, DataFrame
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
%matplotlib inline
Laden Sie auch den diesmal verwendeten Datensatz herunter
python
from sklearn.datasets import load_boston
boston = load_boston()
Dieses Mal verwenden wir RM (durchschnittliche Anzahl der Zimmer pro Wohnung) und Ziel (Preis) in diesem Datenrahmen. Ursprünglich werden sns.pairplot und sns.jointplot verwendet, um nach Variablen zu suchen, die wahrscheinlich eine lineare (proportionale) Regressionsbeziehung haben. Diesmal wird jedoch davon ausgegangen, dass diese beiden Variablen im Voraus eine proportionale Beziehung haben.
python
boston_df = DataFrame(boston.data)
#Geben Sie einen Spaltennamen an
boston_df.columns = boston.feature_names
#Kopieren Sie eine neue Spalte, da sie mit dem Ziel schwer zu verstehen ist
boston_df['Price'] = boston.target
#Anzeige von Streudiagramm und Regressionslinie
sns.lmplot('RM', 'Price', data=boston_df)
Berechnen wir diese Regressionslinie. Verwenden Sie np.linalg.lstsq (X, Y). Da dieses X jedoch ein Array mit einer bestimmten Form erfordert, wird es zu diesem Zweck geformt.
python
X = boston_df.RM
Y = boston_df.Price
#[x,1]In Form von
X = np.array([ [value[0], 1] for value in X])
#In Gleitkommatyp konvertieren
X = X.astype(np.float64)
#a,Jeder vorhergesagte Wert wird in b gespeichert
a, b = np.linalg.lstsq(X, Y)[0]
Dies ist das Ende der Berechnung. Mal sehen, das Ergebnis
python
plt.plot(boston_df.RM, boston_df.Price, 'o')
x = boston_df.RM
plt.plot(x, a*x+b, 'r')
Klicken Sie hier für die offizielle Dokumentation https://numpy.org/doc/stable/reference/generated/numpy.linalg.lstsq.html#numpy.linalg.lstsq
numpy.linalg.lstsq(a, b, rcond='warn')
np.linalg.lstsq (X, Y) [1] kann verwendet werden, um die gesamten Residuen zu extrahieren.
Recommended Posts