Terminación de la matriz en Python
Digamos que tengo una matriz:
> import numpy as nap
> a = np.random.random((5,5))
array([[ 0.28164485, 0.76200749, 0.59324211, 0.15201506, 0.74084168],
[ 0.83572213, 0.63735993, 0.28039542, 0.19191284, 0.48419414],
[ 0.99967476, 0.8029097 , 0.53140614, 0.24026153, 0.94805153],
[ 0.92478 , 0.43488547, 0.76320656, 0.39969956, 0.46490674],
[ 0.83315135, 0.94781119, 0.80455425, 0.46291229, 0.70498372]])
Y que me pinche unos agujeros en ella.np.NaN
, p.ej.:
> a[(1,4,0,3),(2,4,2,0)] = np.NaN;
array([[ 0.80327707, 0.87722234, nan, 0.94463778, 0.78089194],
[ 0.90584284, 0.18348667, nan, 0.82401826, 0.42947815],
[ 0.05913957, 0.15512961, 0.08328608, 0.97636309, 0.84573433],
[ nan, 0.30120861, 0.46829231, 0.52358888, 0.89510461],
[ 0.19877877, 0.99423591, 0.17236892, 0.88059185, nan ]])
Me gustaría rellenar elnan
Entradas utilizando información del resto de entradas de la matriz. Un ejemplo sería usar elpromedio valor de la columna donde elnan
se producen entradas.
En general, ¿hay bibliotecas en Python parafinalización de la matriz ? (por ejemplo, algo en la línea deMétodo de optimización convexo de Candes & Recht).
Fondo:Este problema aparece a menudo en el aprendizaje automático. Por ejemplo, cuando se trabaja concaracterísticas que faltan en clasificación / regresión o enfiltración colaborativa (por ejemplo, ver el problema de Netflix enWikipedia yaquí)