Nous avons utilisé la vérification d'intersection LeaveOneOut comme méthode d'évaluation du modèle lors de l'analyse en utilisant une petite quantité de données, nous allons donc la partager.
Dans la validation croisée LeaveOneOut, la formation et les tests sont effectués sur les données d'un n échantillons, en utilisant un échantillon comme données de test et l'autre comme données de train. Ensuite, lors de l'échange des données de test, cela est répété n fois pour évaluer les performances du modèle. En parlant de vérification d'intersection k-split, k est la même valeur que n échantillons de la quantité de données. Il semble être utilisé lorsque la quantité de données est faible.
Ci-dessous, nous évaluerons une régression simple en utilisant la méthode LOO.
Il existe un certain DataFrame, et la variable explicative utilisée pour la régression simple est spécifiée par loo_column
.
Supposons que le DataFrame mokuteki
contienne une variable objectif.
Il s'entraîne n fois lors de l'échange de données, puis calcule et renvoie finalement RootMeanSquaredError
.
«Statsmodels» est utilisé pour une régression simple.
loo.py
from sklearn.model_selection import LeaveOneOut
from statsmodels import api as sm
loo_column = "setsumei"
def loo_rmse(df,loo_column):
loo_X = df[loo_column]
#Créez un terme de constante de régression simple.
loo_X = sm.add_constant(loo_X)
loo_y = df_analytics["recognition"]
loo = LeaveOneOut()
loo.get_n_splits(loo_X)
# square_Liste pour enregistrer les erreurs
se_list = list()
#Répéter les données en échangeant les index des données utilisées pour le train et le test
for train_index, test_index in loo.split(loo_X):
X_train, X_test = loo_X.iloc[train_index], loo_X.iloc[test_index]
y_train, y_test = loo_y.iloc[train_index], loo_y.iloc[test_index]
#Apprendre la régression simple
model = sm.OLS(y_train,X_train)
result = model.fit()
#Prédire les données de test en fonction des résultats d'apprentissage. Obtenez l'erreur.
pred = result.params["const"] + result.params[loo_column] * X_test[loo_column].values[0]
diff = pred - y_test.values[0]
#Corrigez l'erreur et enregistrez
se_list.append(diff**2)
#Faites la moyenne de l'erreur quadratique, prenez l'itinéraire et revenez
ar = np.array(se_list)
print("RMSE:",np.sqrt(ar.mean()))
http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.LeaveOneOut.html
Merci beaucoup.
Recommended Posts