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 puedo obtener el RMSE a partir de los datos de entrenamiento?

Tengo un problema. Encontré esta pregunta https://stats.stackexchange.com/questions/56302/what-are-good-rmse-values

Alguien escribió:

El RMSE para tus conjuntos de entrenamiento y prueba deben ser muy similares si has construido un buen modelo.

Y otro escribió:

RMSE de prueba > RMSE de entrenamiento => sobreajuste de los datos. RMSE de prueba < RMSE de entrenamiento => subajuste de los datos.

Creo que el RMSE de los datos de prueba es

y_pred = knn.predict(X_test)
rmse = metrics.mean_squared_error(y_test, y_pred, squared=False)

Pero ¿cómo puedo obtener el RMSE (u otra métrica) de mis datos de entrenamiento? Tal vez sea

rmse = metrics.mean_squared_error(X_train, X_test, squared=False)

Pero con eso obtengo

ValueError: Se encontraron variables de entrada con un número inconsistente de muestras: [8880, 2220]

Entonces, ¿cómo puedo obtener el RMSE de mis datos de entrenamiento?

from sklearn.neighbors import (KNeighborsRegressor,)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=30)
knn = KNeighborsRegressor(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=1, n_neighbors=5, p=2, weights='uniform')
knn.fit(X_train, y_train)

y_pred = knn.predict(X_test)
mse = metrics.mean_squared_error(y_test, y_pred)
rmse = metrics.mean_squared_error(y_test, y_pred, squared=False)
print(rmse)
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener el RMSE de sus datos de entrenamiento, simplemente puede reemplazar y_test y y_pred con y_train y y_pred_train. Esto se vería así:

    from sklearn.neighbors import (KNeighborsRegressor,)
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=30)
    knn = KNeighborsRegressor(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=1, n_neighbors=5, p=2, weights='uniform')
    knn.fit(X_train, y_train)
    
    y_pred_train = knn.predict(X_train)
    mse_train = metrics.mean_squared_error(y_train, y_pred_train)
    rmse_train = metrics.mean_squared_error(y_train, y_pred_train, squared=False)
    
    print("Training RMSE:", rmse_train)
    

    Aquí, primero ajustamos nuestro modelo utilizando nuestros datos de entrenamiento, y luego usamos este modelo para hacer predicciones en nuestros datos de entrenamiento (y_pred_train). Luego, calculamos el error cuadrático medio entre estas predicciones y nuestras etiquetas de entrenamiento reales (y_train), y finalmente calculamos el error cuadrático medio raíz (RMSE) utilizando el error cuadrático medio y el parámetro squared=False.

    Tenga en cuenta que, en general, un buen modelo debería tener valores de RMSE similares tanto para los conjuntos de entrenamiento como para los de prueba. Si el RMSE del conjunto de entrenamiento es mucho menor que el del conjunto de prueba, esto puede indicar que el modelo se está sobreajustando a los datos de entrenamiento. Por otro lado, si el RMSE del conjunto de prueba es mucho menor que el del conjunto de entrenamiento, esto puede indicar que el modelo no se ajusta lo suficiente a los datos.

Comments are closed.