Uzupełnianie pustych pól macierzy

Odpowiedz Nowy wątek
2019-06-15 23:04
0

Siemka, czy ktoś się gdzie znajdę/jak nazywa się algorytm do uzupełniania macierzy na podstawie wartości się w niej znajdujących?
W zamyśle mam coś takiego, jest sobie baza danych, w której nadpisywane są dane (dotyczące temperatur). Chciałbym dane z tej bazy wpisywać do macierzy, a potem użyć jakiegoś algorytmu który uzupełniłby resztę tej macierzy na podstawie wartości się w niej znajdujących. Pełna macierz trafiałaby do node-reda i tam zamieniana byłaby na heatmap. Czy ma ktoś pomysł jak mogę coś takiego uzyskać?

Pozostało 580 znaków

2019-06-20 10:48
0

Dlaczego chcesz wprowadzać dane temperaturowe do macierzy i z tego robić heatmap?

  • trzymanie tych temperatur w macierzy jest trochę bez sensu, macierz jest kiepskim pomysłem na reprezentację położenia jakichś np. punktów pomiarowych w przestrzeni. Nawet do tego nie służy.
  • heatmap to trochę co innego niż rozkład temperatur, heatmap tworzysz mając np. dane o włamaniach i chcąc zrobić wizualizację częstości tych włamań bez zaśmiecania mapy milionami kropek itp.

Zależy ile masz punktów pomiarowych i jak są rozłożone w przestrzeni, ale jak już chcesz coś z tym robić to możesz np:

  • zrobić aproksymację na interesującym Cię obszarze - bardzo słabe, bo wszystko się może uśrednić i nawet w punktach pomiarowych dostaniesz inne temperatury, niż były w rzeczywistości
  • zrobić interpolację na całym interesującym Cię obszarze - jeszcze gorzej, niby punkty pomiarowe się będą zgadziesz, ale dostaniesz porypane oscylacje i np. między Warszawą a Krakowem będzie miejsce z rekordową temperaturą +500*C
  • zbudować siatkę trójkątów i/lub czworokątów z Twoich punktów pomiarowych i robić interpolację z 3-4 punktów wewnątrz każdego wielokąta, ważoną wg. względnych współrzędnych - podejście o tyle dobre, że nie będziesz miał oscylacji, nic się nie uśredni, dostaniesz faktyczne wyniki w punktach pomiarowych, poza tym wartości będą ciągłe (nie będzie przeskoków)

Współrzędne naturalne to w przypadku trójkąta odległości od poszczególnych krawędzi trójkąta. Na krawędzi K współrzędna k jest równa 0, a w wierzchołku naprzeciwko K ma wartość 1. Mają jeszcze taką fajną właściwość, że 3 współrzędne zawsze się sumują do 1. Dla czworokątów da się wyprowadzić coś podobnego, choć formuły w tej chwili nie pamiętam.


Prosząc o pomoc w wiadomości prywatnej odbierasz sobie szansę na otrzymanie pomocy od kogoś bardziej kompetentnego :)

Pozostało 580 znaków

2019-06-20 10:58
0
superdurszlak napisał(a):
  • trzymanie tych temperatur w macierzy jest trochę bez sensu, macierz jest kiepskim pomysłem na reprezentację położenia jakichś np. punktów pomiarowych w przestrzeni. Nawet do tego nie służy.

Niekoniecznie. Współczesne obrazowanie w astronomii opiera się na takim rozwiązaniu: https://en.wikipedia.org/wiki/FITS o ile uświadomisz sobie, że rozkład jasności jest pochodną temperatury obiektów (choć nie tylko).

Pozostało 580 znaków

2019-06-20 18:17
0

@Pyxis: temat ten założyłem wcześniej niż tamten, bo jeszcze nie wiedziałem jak to zrobić, po dowiedzeniu się że python będzie najlepszy/najprostszy napisałem temat tam. Twoje rozwiązanie praktycznie rozwiązało mój problem, choć mam jeszcze pytanie: czy można uzupełniać macierz, która punkty posiada np. w 4 innych miejscach niż rogi? teraz posiadając cztery wartości w tym jedną w komórce 1,1 cały pierwszy rząd i kolumna są wypełnione NaNami(prócz wartości na końcu tego rzędu i kolumny oczywiście, bo te wartości są podane)

Pozostało 580 znaków

2019-06-20 18:28
0

@superdurszlak: może źle to określiłem, nie będzie to stricte heatmap, tylko tabela z wartościami zakolorowanymi w zależności od stopnia odchylenia od wartości idealnej, im bliżej tym bardziej zielone, im dalej tym bardziej czerwone. Dalej te dane lecą do bazy danych i stamtąd są sczytywane już przez stronę docelową, macierz jest tylko pośrednikiem tego wszystkiego, więc wydajność tego rozwiązania nie ma większego znaczenia, bo nowe dane będą się generowały co ok. 5 minut, a raczej przez tyle czasu operacja zdąży się wykonać. Punkty pomiarowe są na tym samym polu, więc nie będzie to więcej jak kilkaset metrów (kilkadziesiąt metrów między czujnikami) więc, choć nie jestem żadnym specem, to uśrednienie nie będzie takie złe. Choć przyjmę lepszy pomysł jeśli taki masz :D Aktualnie korzystam z interpolacji w pandas.

Pozostało 580 znaków

2019-06-20 18:35
0
adammo94 napisał(a):

Twoje rozwiązanie praktycznie rozwiązało mój problem, choć mam jeszcze pytanie: czy można uzupełniać macierz, która punkty posiada np. w 4 innych miejscach niż rogi?

Tak, skorzystaj z parametru limit_direction w metodzie interpolate:

d = d.interpolate(limit_direction='both')
d = d.interpolate(axis=1, limit_direction='both')
edytowany 1x, ostatnio: Pyxis, 2019-06-20 18:35

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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