Uzupełnianie (przewidywanie) pustych pól macierzy

0

Siemka, mam takie pytanie, czy istnieje jakaś biblioteka, którą mógłbym przewidzieć pola macierzy?
Powiedzmy, że jest sobie macierz 5x5:

| 2 | nan nan nan | 6 |
nan nan nan nan nan
nan nan nan nan nan
nan nan nan nan nan
| 8 | nan nan nan |10|

Póki co znalazłem sci-kit learn, ale problem jest tego typu, że po pierwsze wartości przewidywane (uśredniane są tylko w kolumnach gdzie już znajdują się dane więc w tym przypadku kolumny 2,3,4 w ogóle wypadają), a z kolei w kolumnach 1 oraz 5 wartość jest uśredniana jednokrotnie i wpisywana do wszystkich pustych pól, więc finalnie otrzymuję coś takiego:

2 6
5 8
5 8
5 8
8 10

Macie może jakieś lepsze pomysły co zrobić z takim fantem?

0

Przygotujmy najpierw Twoją macierz:

import numpy as np

m = np.zeros(25).reshape(5, -1)
m = np.full_like(m, np.nan)
m[0][0], m[0][-1], m[-1][0], m[-1][-1] = 2, 6, 8, 10

Następnie wykorzystajmy moduł pandas i uzupełnijmy za pomocą interpolacji najpierw kolumny, a potem wiersze:

import pandas as pd

d = pd.DataFrame(m)
d = d.interpolate() # kolumny, domyślnie axis=0
d = d.interpolate(axis=1)
m = np.array(d) # zamiana z powrotem na macierz:

array([[ 2.   ,  3.   ,  4.   ,  5.   ,  6.   ],
       [ 3.5  ,  4.375,  5.25 ,  6.125,  7.   ],
       [ 5.   ,  5.75 ,  6.5  ,  7.25 ,  8.   ],
       [ 6.5  ,  7.125,  7.75 ,  8.375,  9.   ],
       [ 8.   ,  8.5  ,  9.   ,  9.5  , 10.   ]])

Istnieją różne odmiany metody interpolate. Domyślna to metoda liniowa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1