Error de sklearn ValueError: la entrada contiene NaN, infinito o un valor demasiado grande para dtype('float64')
Estoy usando sklearn y tengo un problema con la propagación por afinidad. He creado una matriz de entrada y sigo recibiendo el siguiente error.
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
he corrido
np.isnan(mat.any()) #and gets False
np.isfinite(mat.all()) #and gets True
Intenté usar
mat[np.isfinite(mat) == True] = 0
para eliminar los valores infinitos pero esto tampoco funcionó. ¿Qué puedo hacer para deshacerme de los valores infinitos en mi matriz, de modo que pueda utilizar el algoritmo de propagación por afinidad?
Estoy usando anaconda y python 2.7.9.
Esto puede suceder dentro de scikit y depende de lo que estés haciendo. Recomiendo leer la documentación de las funciones que estás utilizando. Es posible que esté utilizando uno que dependa, por ejemplo, de que su matriz sea positiva definida y no cumpla ese criterio.
EDITAR : ¿Cómo podría perderme eso?
np.isnan(mat.any()) #and gets False
np.isfinite(mat.all()) #and gets True
obviamente está mal. Lo correcto sería:
np.any(np.isnan(mat))
y
np.all(np.isfinite(mat))
Quiere comprobar si alguno de los elementos es NaN y no si el valor de retorno de la any
función es un número...
Recibí el mismo mensaje de error al usar sklearn con pandas . Mi solución es restablecer el índice de mi marco de datos df
antes de ejecutar cualquier código sklearn:
df = df.reset_index()
Encontré este problema muchas veces cuando eliminé algunas entradas en mi archivo df
, como
df = df[df.label=='desired_one']