Matrix-Vervollständigung in Python

Angenommen, ich habe eine Matrix:

> 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]])

Und dass ich ein paar Löcher hinein stanzenp.NaN, z.B.:

> 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 ]])

Ich möchte das ausfüllennan Einträge unter Verwendung von Informationen aus den übrigen Einträgen der Matrix. Ein Beispiel wäre diedurchschnittlich Wert der Spalte, in der dienan Einträge erfolgen.

Generell gibt es in Python keine Bibliotheken fürMatrix-Vervollständigung ? (z. B. etwas in der Richtung vonDie konvexe Optimierungsmethode von Candes & Recht).

Hintergrund:

Dieses Problem tritt häufig beim maschinellen Lernen auf. Zum Beispiel beim Arbeiten mitfehlende Funktionen in Klassifikation / Regression oder inkollaboratives Filtern (siehe z. B. das Netflix-Problem aufWikipedia undHier)

Antworten auf die Frage(5)

Ihre Antwort auf die Frage