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.

Aplica el algoritmo de Naive Bayes en los datos de prueba con valores NaN.

Entrené un algoritmo para hacer predicciones meteorológicas en un conjunto de prueba.

‘Naive Bayes’
from sklearn import metrics
from sklearn.naive_bayes import GaussianNB
import seaborn as sns

weatherbayes = GaussianNB()
weatherbayes.fit(X_train, y_train)
predbayes = weatherbayes.predict(df_test)

El problema es que mi conjunto de prueba tiene valores nulos (nan), los cuales no quiero reemplazar con la ‘media’ u otra cosa. Deben ser ignorados sin eliminarlos del conjunto de prueba.

Mi conjunto de entrenamiento se ve así:
enter image description here

Mi conjunto de prueba se ve así:
enter image description here

Y obtengo el siguiente error si no elimino los valores nulos:

ValueError: El valor de entrada contiene NaN, infinito o un valor demasiado grande para dtype(‘float64’).

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para ignorar los valores nan en el conjunto de prueba sin eliminarlos, puedes usar la función Imputer de sklearn.preprocessing para reemplazar los valores nan con np.nan, que representará un valor faltante. Luego, puedes convertir el conjunto de prueba en un dataframe de pandas y eliminar las filas con valores faltantes usando la función .dropna(). Esto eliminará las filas con valores faltantes sin afectar el conjunto de prueba original. Finalmente, puedes usar el clasificador entrenado GaussianNB para predecir los valores del conjunto de prueba modificado sin errores.

    Aquí tienes un ejemplo de fragmento de código:

    from sklearn.preprocessing import Imputer
    import numpy as np
    import pandas as pd
    
    # Reemplazar los valores nan con np.nan
    imp = Imputer(missing_values='NaN', strategy='constant', fill_value=np.nan)
    df_test_imp = pd.DataFrame(imp.fit_transform(df_test))
    
    # Eliminar las filas con valores faltantes
    df_test_imp = df_test_imp.dropna()
    
    # Predecir valores usando el clasificador entrenado
    predbayes = weatherbayes.predict(df_test_imp)
    

    Este código reemplaza los valores nan con np.nan usando la función Imputer, luego convierte el conjunto de prueba modificado en un dataframe de pandas y elimina las filas con valores faltantes usando .dropna(). El dataframe resultante df_test_imp se utiliza para predecir los valores usando el clasificador entrenado GaussianNB. De esta manera, los valores nan se ignoran sin afectar el conjunto de prueba original.

Comments are closed.