Um das Verständnis der Theorie der Regressionsanalyse zu vertiefen, erstellen wir manuell ein analytisches Modell, ohne die sklearn-Bibliothek zu verwenden, die eine leistungsstarke Waffe der Regressionsanalyse darstellt.
Prognostizieren Sie den Wert der Zielvariablen (Ausgabedaten) anhand der erklärenden Variablen (Eingabedaten). Dieses Mal betrachten wir den Fall einer einfachen erklärenden Variablen für die theoretische Berechnung. (Einfache Regression)
import numpy as np
import pandas as pd
from pandas import DataFrame
data_age = np.array([20,20,28,38,33,34,22,37,
26,21,22,39,31,29,38,35,
32,27,30])
data_salary = np.array([410,500,480,710,630,600,430,
690,500,410,490,800,550,550,
700,700,650,540,600])
data = DataFrame({'Alter':data_age,
'Einkommen':data_salary})
Das folgende Diagramm kann aus dem obigen Datensatz erhalten werden.
Aus dieser Grafik werde ich versuchen, die Beziehung zwischen Alter und Einkommen mit einer linearen Gleichung auszudrücken. (Bringen Sie es gewaltsam in die lineare Formel, aber es ist tatsächlich eine kompliziertere Formel.)
Nehmen wir vorerst an, dass das vorhergesagte Alter x und das Einkommen y ist und es als "y = ax + b" ausgedrückt wird.
Beachten Sie, dass die Werte von a und b nicht einfach bestimmt werden können, da hier mehrere Daten vorhanden sind. Um die vernünftigsten Werte für a und b zu berechnen, verwenden wir die Idee des mittleren quadratischen Fehlers.
Nehmen Sie insbesondere die Differenz zwischen dem Einkommen y, das für jede Daten `` `y = ax + bvorhersagt (zurückgibt).
y - 410= 20a + b - 410
y - 500= 20a + b - 500
y - 480= 28a + b - 480```
...
Transformiert mit.
Das Quadrat der Differenz zwischen den Werten der tatsächlichen Daten und den vorhergesagten Daten wird durch die vorbereiteten Daten (N) addiert, und der Durchschnittswert ist der durchschnittliche quadratische Fehler Q (a, b).
Q(a,b) = \frac{1}{N}\sum_{k=0}^{n-1}(ax_k + b - y_k)
Dieses `` `y_k``` ist das Einkommen als tatsächliche Daten. Wir werden versuchen, die Beziehung zwischen Alter und Einkommen zu linearisieren, indem wir a und b finden, die den durchschnittlichen quadratischen Fehler Q (a, b) minimieren.
Um a und b zu finden, die Q (a, b) minimieren, geben Sie zunächst verschiedene Werte in a und b ein und schreiben Sie einen Umriss des durchschnittlichen quadratischen Fehlers.
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
#Jeder a,vorbereiten b
a = np.linspace(-200,200,100)
b = np.linspace(-500,500,100)
#Einfach eine Kombination aus a und b zu machen
#Erweitern Sie jedes zu einem zweidimensionalen Array(Muss eine gekrümmte Oberfläche zeichnen)
A,B = np.meshgrid(a,b)
#Funktion zur Berechnung von Q.
def calc_Q(x,y,a,b):
result = (a * x + b - y)**2
return np.mean(result)
#Array für Q.(Mit 0 initialisieren)
Q = np.zeros([len(a),len(b)])
#a,Berechnen Sie Q für alle Kombinationen von b
for j in range(100):
for k in range(100):
Q[j,k] = calc_Q(data_age,data_salary,a[j],b[k])
#Schreiben Sie einen Umriss eines 3D-Diagramms
fig = plt.figure(figsize=[10,10])
ax = fig.add_subplot(111,projection="3d")
ax.view_init(45,10)
ax.set_xlabel("a",size=14,color="blue")
ax.set_ylabel("b",size=14,color="blue")
ax.set_zlabel("Q",size=14,color="blue")
ax.plot_surface(A,B,Q,color="red")
plt.show()
Aus dem Diagramm ist ersichtlich, dass der Wert von Q [a, b] das Minimum in der Nähe von a = 50 bis 200, b = 0 ist. Aus diesem Diagramm ist ersichtlich, dass es wahrscheinlich einen Mindestwert gibt. Daher wird die Methode des plötzlichen Abstiegs (Berechnungsmethode des Minimalwerts unter Verwendung der Steigung) verwendet, um die Werte von a und b zu finden, wenn der Wert von Q [a, b] minimiert wird.
Fortsetzen.
Einführung in die numerische Python-Berechnung https://python.atelierkobato.com/mse/
Recommended Posts