[PYTHON] Bewerten Sie die Leistung eines einfachen Regressionsmodells mithilfe der LeaveOneOut-Schnittstellenvalidierung

Einführung

Wenn wir eine Analyse mit einer kleinen Datenmenge durchgeführt haben, haben wir die LeaveOneOut-Schnittpunktüberprüfung als Modellbewertungsmethode verwendet, damit wir sie gemeinsam nutzen können.

Bei der Kreuzvalidierung von LeaveOneOut werden Schulungen und Tests an den Daten von einer n Stichprobe durchgeführt, wobei eine Stichprobe als Testdaten und die andere als Zugdaten verwendet wird. Während des Austauschs der Testdaten wird dies dann n-mal wiederholt, um die Leistung des Modells zu bewerten. Apropos k-Split-Schnittpunktüberprüfung: k ist der gleiche Wert wie n Stichproben der Datenmenge. Es scheint verwendet zu werden, wenn die Datenmenge gering ist.

Im Folgenden wird die einfache Regression mithilfe der LOO-Methode bewertet.

Code

Es gibt einen bestimmten DataFrame, und die für die einfache Regression verwendete erklärende Variable wird durch "loo_column" angegeben. Angenommen, der DataFrame mokuteki enthält eine Zielvariable. Es trainiert n-mal beim Datenaustausch und berechnet schließlich "RootMeanSquaredError" und gibt es zurück. Statsmodels wird für die einfache Regression verwendet.

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]
    
    #Erstellen Sie einen einfachen konstanten Regressionsbegriff.
    loo_X = sm.add_constant(loo_X)
    loo_y = df_analytics["recognition"]

    loo = LeaveOneOut()
    loo.get_n_splits(loo_X)

    # square_Liste zum Speichern von Fehlern
    se_list = list()
    
    #Wiederholen Sie die Daten, während Sie die Indizes der für Zug und Test verwendeten Daten austauschen
    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]
        
        #Einfache Regression lernen
        model = sm.OLS(y_train,X_train)
        result = model.fit()
        
        #Vorhersage für Testdaten basierend auf Lernergebnissen. Erhalten Sie den Fehler.
        pred = result.params["const"] + result.params[loo_column] * X_test[loo_column].values[0]
        diff = pred - y_test.values[0]
        
        #Quadrieren Sie den Fehler und speichern Sie
        se_list.append(diff**2)

    #Den quadratischen Fehler mitteln, die Route nehmen und zurückkehren
    ar = np.array(se_list)
    print("RMSE:",np.sqrt(ar.mean()))

Referenz

http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.LeaveOneOut.html

Vielen Dank.

Recommended Posts

Bewerten Sie die Leistung eines einfachen Regressionsmodells mithilfe der LeaveOneOut-Schnittstellenvalidierung
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Regression zu bewerten
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 3.1. Kreuzvalidierung: Bewerten Sie die Leistung des Schätzers
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Klassifizierung zu bewerten
[Pyro] Statistische Modellierung mit der probabilistischen Programmiersprache Pyro ~ Einfaches Regressionsmodell ~
Bewerten Sie die Genauigkeit des Lernmodells durch einen Kreuztest von scikit learn
Erfahren Sie anhand eines einfachen Regressionsmodells den Ablauf der Bayes'schen Schätzung und die Verwendung von Pystan
[Python] Implementierung von Clustering mit einem gemischten Gaußschen Modell
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 2
Python-Implementierung der Bayes'schen linearen Regressionsklasse
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 1
Erläuterung des Konzepts der Regressionsanalyse mit Python Extra 1
Neue Corona-Virus-Infektion: Die Rolle sozialer Distanzstrategien mit einem einfachen Modell verstehen
Implementierung von VGG16 mit Keras, die ohne Verwendung eines trainierten Modells erstellt wurden
Vermeiden Sie die Fallstricke bei der Verwendung eines Mac (für Linux-Benutzer?)
Eine einfache Python-Implementierung der k-Neighborhood-Methode (k-NN)
Ich habe versucht, das CNN-Modell von TensorFlow mit TF-Slim umzugestalten
Die Geschichte des Django-Modellfeldes verschwindet aus der Klasse
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
Ich habe ein VGG16-Modell mit TensorFlow gemacht (unterwegs)
Versuchen Sie, eine multimodale Verteilung mithilfe des EM-Algorithmus zu modellieren
Analysieren Sie das Themenmodell, mit GensimPy3 Romanautor zu werden
Die Geschichte des Erstellens einer Datenbank mithilfe der Google Analytics-API
Ein einfaches Beispiel für pivot_table.
Ein Memorandum zur Verwendung von eigen3
Versuchen Sie, Elasticsearch als Grundlage für Ihr Frage- und Antwortsystem zu verwenden
Finden Sie den optimalen Wert der Funktion mit einem genetischen Algorithmus (Teil 1)
[Python] Eine einfache Funktion zum Ermitteln der Mittelkoordinaten eines Kreises
[Kaggle] Ich habe mit dem Titanic-Tutorial eine Sammlung von Problemen erstellt
Lerne Zundokokiyoshi mit einem einfachen RNN
Implementierung eines einfachen Partikelfilters
Erstellen einer einfachen Tabelle mit Stettytable
Python-Simulation des Epidemiemodells (Kermack-McKendrick-Modell)
Erstellen eines Lernmodells mit MNIST
Die Geschichte des Exportierens eines Programms
Memorandum zur Einführung des EXODUS-Datenmodells der Finite-Elemente-Methode (FEM)
Versuchen Sie mit einem linearen Regressionsmodell auf Android [PyTorch Mobile] zu schließen
Was Java-Benutzer davon gehalten haben, die Go-Sprache für einen Tag zu verwenden
Erklären Sie vorsichtig den Prozess der Erstellung einer einfachen Überwachungskamera ohne Server mithilfe von Raspeye, Gmail API und Line API