○ Les principaux points de cet article Notez que j'ai appris à évaluer le problème de régression.
Apprentissage et évaluation des problèmes de régression
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
from sklearn.svm import SVR
%matplotlib inline
#Préparation des données. Prix des maisons à Boston
data = load_boston()
X = data.data[:, [5,]] #Extraire uniquement le nombre de pièces comme variables explicatives
y = data.target
#Apprendre avec un modèle de régression simple
model_l = LinearRegression()
model_l.fit(X, y)
#Récurrence ligne droite y=ax +Inclinaison de b et valeur de section
print(model_l.coef_) #a: Inclinaison
print(model_l.intercept_) #b: Coupe
#Prévoir
l_pred = model_l.predict(X)
#affichage graphique
fig, ax = plt.subplots()
ax.scatter(X, y, color='red', marker='s', label='data')
ax.plot(X, l_pred, color='blue', label='regression curve')
ax.legend()
plt.show()
résultat [9.10210898] -34.67062077643857
C'est comme ça?
Calcul de l'erreur quadratique entre la valeur prédite et la valeur réelle et prendre la moyenne Plus la valeur est petite, plus la valeur prédite est correcte.
Erreur quadratique moyenne
mean_squared_error(y, l_pred)
43.60055177116956
Un nombre qui indique la précision de la prédiction en utilisant l'erreur quadratique moyenne. Ce sera une valeur de 0 à 1. Même en comparant différentes valeurs, les valeurs sont relativement comparables.
Coefficient de décision
r2_score(y, l_pred)
0.48352545599133423
Le résultat du modèle de régression linéaire est-il un bon résultat? Ensuite, essayez d'autres algorithmes.
Apprentissage et évaluation de SVR
# SVR(Machine à vecteurs de support (méthode du noyau))Apprendre en
model_s = SVR(C=0.01, kernel='linear') #Le paramètre de régularisation est 0.Utiliser le noyau linéaire avec 01
model_s.fit(X, y)
#Récurrence ligne droite y=ax +Inclinaison de b et valeur de section
print(model_s.coef_) #a: Inclinaison
print(model_s.intercept_) #b: Coupe
#Prévoir
s_pred = model_s.predict(X)
#affichage graphique
fig, ax = plt.subplots()
ax.scatter(X, y, color='red', marker='s', label='data')
ax.plot(X, l_pred, color='blue', label='regression curve')
ax.plot(X, s_pred, color='black', label='svr curve')
ax.legend()
plt.show()
résultat [[1.64398]] [11.13520958]
Le SVR est-il plus subtil? ??
Erreur quadratique moyenne et coefficient de détermination
mean_squared_error(y, s_pred)
72.14197118147209
r2_score(y, s_pred)
0.14543531775956597
La régression linéaire est meilleure. Pourtant! !! Je ne sais pas si je change les hyper paramètres (paramètres de régularisation et méthode du noyau) de SVR.
Apprentissage et évaluation SVR (modification des hyper paramètres)
model_s2 = SVR(C=1.0, kernel='rbf') #Utiliser le noyau rbf avec le paramètre de régularisation 1
model_s2.fit(X, y)
#Prévoir
s_pred2 = model_s2.predict(X)
#affichage graphique
fig, ax = plt.subplots()
ax.scatter(X, y, color='red', marker='s', label='data')
ax.plot(X, l_pred, color='blue', label='regression curve')
ax.plot(X, s_pred, color='black', label='svr curve')
ax.plot(X, s_pred2, color='orange', label='svr_rbf curve')
ax.legend()
plt.show()
résultat
Est-ce lisse et agréable? ??
Erreur quadratique moyenne et coefficient de détermination
mean_squared_error(y, s_pred2)
37.40032481992347
r2_score(y, s_pred2)
0.5569708427424378
Mieux que la régression linéaire. Cela dépend des hyper paramètres.
■ Impressions ・ Étudiez comment évaluer les problèmes de régression. L'erreur quadratique moyenne et le coefficient de détermination sont tous deux déterminés sur la base de la "différence entre la valeur prédite et les données réelles". En tant que programme, la «liste de données de réponse correcte» et la «liste de données prédites» sont comparées, et la différence est calculée pour chaque donnée, mise au carré et moyennée. Facile à comprendre sensuellement.
Recommended Posts