es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo dividir adecuadamente los datos de entrenamiento y los datos de validación en la validación cruzada de K-fold.

Primero, como hablante de español no nativo, estoy utilizando un traductor para resolver mi problema. Les pido comprensión si la oración es torpe y difícil de leer.

Intento aprender datos a través de la validación cruzada Kfold. Sin embargo, ocurren errores continuos en el proceso de dividir los datos de entrenamiento para Kfold. El siguiente código es mi conjunto de datos.

df_test = df_data.iloc[50001:, :] # Conjunto de prueba
df_use = df_data.iloc[0:50000, :] # Conjunto de entrenamiento

x_test = df_test.drop(['upgraded'], axis = 1)
y_test = df_test['upgraded']

x = df_use.drop(['upgraded'], axis = 1)
y = df_use['upgraded']

Y cada vez que intento dividir los datos de entrenamiento y los datos de validación, ocurre un error.

for train_ix, val_ix in kfold.split(x):
    trainX, trainy = x[train_ix], y[train_ix]
    valX, valy = x[val_ix], y[val_ix]

    model, val_acc = evaluate_model(trainX, trainy, valX, valy)

No estoy seguro si esto ayudará, pero cuando uso este código, trainX, trainy = x[train_ix], y[train_ix] aparece este mensaje de error.

KeyError: “None of [Int64Index([10000, 10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008,
10009,

49990, 49991, 49992, 49993, 49994, 49995, 49996, 49997, 49998,
49999],
dtype=’int64′, length=40000)] are in the

Entonces cambié ese código así.

for train_ix, val_ix in kfold.split(x):
  trainX, valX = x.iloc[train_ix], x.iloc[val_ix]
  trainy, valy = y.iloc[train_ix], y.iloc[val_ix]

model, val_acc = evaluate_model(trainX, trainy, valX, valy)

Y esta vez, el código model, val_acc = evaluate_model(trainX, trainy, valX, valy) obtiene el error.

IndexError: index -9223372036854775808 is out of bounds for axis 1 with size 2

Así que también probé este código. (Corté df_use con train_test_split.) Ocurre el mismo error de índice.

inputs = np.concatenate((x_train, x_val), axis=0)
targets = np.concatenate((y_train, y_val), axis=0)

Quiero dividir y colocar los datos de la manera correcta para que el modelo de validación cruzada Kfold reconozca mis datos y pueda ejecutar el modelo. Sería de mucha ayuda si alguien me ayudara.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando implementar la validación cruzada k-fold en tu conjunto de datos usando Python, pero te estás encontrando con errores al dividir los conjuntos de entrenamiento y validación.

    El primer mensaje de error que recibiste, “KeyError: Ninguno de [Int64Index(…)] está en las [columnas]”, sugiere que puede haber algunos nombres de columna faltantes o incorrectos en tu conjunto de datos. Es posible que desees revisar los nombres de columna en tu conjunto de datos y asegurarte de que coincidan con los que estás utilizando en tu código.

    El segundo mensaje de error que recibiste, “IndexError: el índice -9223372036854775808 está fuera de límites en el eje 1 con tamaño 2”, sugiere que puede haber un problema con las dimensiones de tus datos de entrada. Es posible que desees verificar las dimensiones de tus datos de entrada y asegurarte de que cumplan con los requisitos de tu modelo.

    Además, puede ser útil intentar usar la función train_test_split de la biblioteca scikit-learn para dividir tus datos en conjuntos de entrenamiento y validación antes de implementar la validación cruzada k-fold. Esto puede ayudar con el proceso de división de datos y prevenir errores durante la validación cruzada k-fold.

    Si continúas encontrando errores, por favor proporciona más detalles sobre tu conjunto de datos, modelo y mensajes de error para ayudar a diagnosticar el problema de manera más precisa.

Comments are closed.