Afin d'approfondir la compréhension de la théorie de l'analyse de régression, créons manuellement un modèle analytique sans utiliser la bibliothèque sklearn, qui est une arme puissante d'analyse de régression.
Prédire la valeur de la variable objective (données de sortie) à l'aide de la variable explicative (données d'entrée). Cette fois, nous considérerons le cas d'une variable explicative simple pour le calcul théorique. (Régression simple)
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({'âge':data_age,
'le revenu':data_salary})
Le graphique suivant peut être obtenu à partir de l'ensemble de données ci-dessus.
À partir de ce graphique, j'essaierai d'exprimer la relation entre l'âge et le revenu avec une équation linéaire. (Amenez-le de force à la formule linéaire, mais c'est en fait une formule plus compliquée.)
Pour le moment, considérons que l'âge prédit est x et le revenu est y, et il est exprimé comme
y = ax + b. Notez que les valeurs de a et b ne peuvent pas être simplement déterminées car il y a ici plusieurs données. Pour calculer les valeurs les plus raisonnables pour a et b, nous utilisons l'idée d'erreur quadratique moyenne. Plus précisément, prenez la différence entre le revenu y qui prédit (renvoie) `` `` y = ax + b
pour chaque donnée.
y - 410= 20a + b - 410
y - 500= 20a + b - 500
y - 480= 28a + b - 480
...
Se transforme avec.
Le carré de la différence entre les valeurs des données réelles et les données prédites est ajouté par les données préparées (N), et la valeur moyenne est l'erreur quadratique moyenne Q (a, b).
Q(a,b) = \frac{1}{N}\sum_{k=0}^{n-1}(ax_k + b - y_k)
Ce `` y_k '' est le revenu sous forme de données réelles. Nous allons essayer de linéariser la relation entre l'âge et le revenu en trouvant a et b qui minimisent l'erreur quadratique moyenne Q (a, b).
Tout d'abord, afin de trouver a et b qui minimisent Q (a, b), entrez diverses valeurs dans a et b et écrivez un aperçu de l'erreur quadratique moyenne.
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
#Tout un,préparer b
a = np.linspace(-200,200,100)
b = np.linspace(-500,500,100)
#Facile à faire une combinaison de a et b
#Étendez chacun à un tableau à deux dimensions(Nécessaire pour dessiner une surface courbe)
A,B = np.meshgrid(a,b)
#Fonction de calcul de Q
def calc_Q(x,y,a,b):
result = (a * x + b - y)**2
return np.mean(result)
#Array pour Q(Initialiser avec 0)
Q = np.zeros([len(a),len(b)])
#a,Calculer Q pour toutes les combinaisons de b
for j in range(100):
for k in range(100):
Q[j,k] = calc_Q(data_age,data_salary,a[j],b[k])
#Ecrire le contour d'un graphique 3D
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()
D'après le graphique, on peut voir que la valeur de Q [a, b] est le minimum près de a = 50 à 200, b = 0. De ce graphique, on peut voir qu'il y a probablement une valeur minimale. Par conséquent, la méthode de redescente soudaine (méthode de calcul de la valeur minimale à l'aide de la pente) est utilisée pour trouver les valeurs de a et b lorsque la valeur de Q [a, b] est minimisée.
Continuer.
Introduction au calcul numérique Python https://python.atelierkobato.com/mse/
Recommended Posts