1

Ich versuche derzeit, Kreuzvalidierung mit linearer Regression zu implementieren. Die lineare Regression funktioniert, aber wenn ich Kreuzvalidierung versuchen bekomme ich diesen Fehler:Fehler beim Versuch der Kreuzvalidierung in Python

TypeError: only integer scalar arrays can be converted to a scalar index 

ich auf der Linie 5 von meinem Code diesen Fehler.

ist hier mein Code:

for train_index, test_index in kf.split(X): 
    print("TRAIN:", train_index, "TEST:", test_index) 
    X_train, X_test = X[train_index], X[test_index] 
    y_train, y_test = y[train_index], y[test_index] 
    linreg.fit(X_train, Y_train) 
    # p = np.array([linreg.predict(xi) for xi in x[test]]) 
    p = linreg.predict(X_test) 
    e = p-Y_test 
    xval_err += np.dot(e,e) 

rmse_10cv = np.sqrt(xval_err/len(X_train)) 

Kann mir jemand bitte helfen mit diesem Problem?

Vielen Dank im Voraus!

+0

Können Sie Ihre Daten hochladen? – sera

+0

Und können Sie Ihre Importe und alle relevanten Definitionen einschließen, damit wir 'kf.split' und' linreg.fit' bitte auflösen können? – Imran

Antwort

1

Es gibt ein paar Probleme mit Ihrem Code.

In Zeile 5 ist Y_train nicht definiert. Ich denke du willst den Kleinbuchstaben y_train.

Ebenso wollen Sie e = p-y_test auf Linie 8.

In rmse_10cv = np.sqrt(xval_err/len(X_train)) X_train innerhalb der Schleife definiert ist, so wird es den Wert auf der letzten Iteration der Schleife nehmen. Beobachten Sie Ihre Ausgabe, wo Sie Ihre Trainingsindizes für jede Falte drucken müssen, um sicherzustellen, dass die Länge von X_train immer dieselbe ist, andernfalls ist Ihre Berechnung von rmse_10cv nicht gültig.

lief ich Ihren Code mit den Korrekturen I beschrieben und mit den folgenden vor der Schleife:

import numpy as np 
from sklearn.model_selection import KFold 
from sklearn.linear_model import LinearRegression 
X = X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]]) 
y = np.array([1, 2, 3, 4]) 
kf = KFold(n_splits=2) 
linreg = LinearRegression() 
xval_err = 0 

und ich habe keine Fehler.

+0

Danke für die Hilfe! Kein Fehler mehr :) – Cynthia

Verwandte Themen