# Mapowanie wymiarów danych na wizualizacje
#### Wstęp
Co znajdziesz w tym artykule?
* Dowiesz się, czym jest wizualizacja danych.
* Poznasz kilka skutecznych strategii wizualizacji w wielu wymiarach (od 1D do 4D).
#### Problem
Analityka opisowa jest jednym z podstawowych elementów cyklu życia każdej analizy związanej z projektem data science lub nawet konkretnym badaniem. Agregacja danych, podsumowanie i wizualizacja to jedne z głównych filarów wspierających ten obszar analizy danych. Od czasów tradycyjnego Business Intelligence, a nawet w obecnej erze sztucznej inteligencji, wizualizacja danych stanowi istotne narzędzie.Wyróżnia się dużą skutecznością w wyodrębnianiu właściwych informacji, zrozumieniu i interpretacji wyników w sposób jasny i łatwy, dlatego jest szeroko stosowana przez różne organizacje. Jednakże radzenie sobie z wielowymiarowymi zbiorami danych, zawierającymi zazwyczaj więcej niż dwa atrybuty, zaczyna powodować problemy, ponieważ medium analizy i komunikacji danych jest zazwyczaj ograniczone do dwóch wymiarów.
##### Wymiar
Dane strukturalne zazwyczaj składają się z obserwacji danych reprezentowanych przez wiersze i cech lub atrybutów danych reprezentowanych przez kolumny. Każda kolumna może być również określana jako konkretny **wymiar** **zbioru danych**.
###### Przykład - jakość wina
W tym artykule wykorzystany zostanie zestaw danych o jakości wina dostępnego w Repozytorium UMI Machine Learning. Dane składają się z dwóch zbiorów przedstawiających różne atrybuty portugalskiego wina "Vinho Verde". W omawianym przykładzie zostaną wykorzystanę dane z biblioteki Sklearn. Oto przykład kodu:
```python
from sklearn.datasets import load_wine
wine = load_wine()
data = wine['data']
```
| | alcohol | malic_acid | ash | alcalinity_of_ash | magnesium | total_phenols | flavanoids | nonflavanoid_phenols | proanthocyanins | color_intensity | hue | proline |
| --------- | ------- | ---------- | ---- | ----------------- | --------- | ------------- | ---------- | -------------------- | --------------- | --------------- | ---- | ------- |
| **Wine0** | 14.23 | 1.71 | 2.43 | 15.6 | 127.0 | 2.80 | 3.06 | 0.28 | 2.29 | 5.64 | 1.04 | 1065.0 |
| **Wine1** | 13.20 | 1.78 | 2.14 | 11.2 | 100.0 | 2.65 | 2.76 | 0.26 | 1.28 | 4.38 | 1.05 | 1050.0 |
| **Wine2** | 13.16 | 2.36 | 2.67 | 18.6 | 101.0 | 2.80 | 3.24 | 0.30 | 2.81 | 5.68 | 1.03 | 1185.0 |
| **Wine3** | 14.37 | 1.95 | 2.50 | 16.8 | 113.0 | 3.85 | 3.49 | 0.24 | 2.18 | 7.80 | 0.86 | 1480.0 |
| **Wine4** | 13.24 | 2.59 | 2.87 | 21.0 | 118.0 | 2.80 | 2.69 | 0.39 | 1.82 | 4.32 | 1.04 | 735.0 |
Ten przykład obejmuje dwanaście kolumn numerycznych. Każda kolumna określa wymiar danych.
#### Wizualizacja danych w jednym wymiarze (1-D)
Jednym z najszybszych i najbardziej efektywnych sposobów wizualizacji wszystkich danych liczbowych i ich rozkładów jest wykorzystanie histogramów.

Powyższe wykresy dają dobre wyobrażenie o podstawowym rozkładzie danych dla każdego z atrybutów.
Przejdźmy do wizualizacji jednego z ciągłych atrybutów numerycznych. Zasadniczo histogram lub wykres gęstości pozwala dobrze zrozumieć, jak dane są dystrybuowane dla tego atrybutu.


## Analiza wielowariantowa
Analiza wielowariantowa to miejsce, w którym zaczyna się złożoność. Tutaj analizujemy wiele wymiarów danych lub atrybutów **(2 lub więcej**). Analiza wielowariantowa obejmuje nie tylko sprawdzanie rozkładów, ale także potencjalnych związków, wzorców i korelacji między tymi atrybutami.
#### Wizualizacja danych w dwóch wymiarach (2-D)
Jednym z najlepszych sposobów na sprawdzenie potencjalnych związków lub korelacji pomiędzy różnymi atrybutami danych jest wykorzystanie macierzy korelacji parami i przedstawienie jej w formie mapy cieplnej.
W statystyce, korelacja lub zależność to każdy statystyczny związek, przyczynowy lub nie, pomiędzy dwoma zmiennymi losowymi lub danymi dwuwartościowymi. W najszerszym znaczeniu korelacja to każde statystyczne powiązanie, choć w rzeczywistości odnosi się do stopnia, w jakim para atrybutów jest liniowo powiązana.
Przykłady zjawisk zależnych obejmują wysoką korelację ```0.55``` między ```color_intensity``` i ```alcohol```. Na przekątnej są jedynki, co uzasadnia, że atrybut jest ze sobą silnie skolerowany. Mapa korelacji parami jest symetryczna, ponieważ nie ma znaczenia w jakiej kolejności policzymy korelacje pomiędzy dwoma atrybutami.

Kolory na mapie ciepła różnią się w zależności od siły koleracji i można łatwo zauważyć, że niektóre atrybuty są silnie ze sobą skorelowane. Łatwo z takiej postaci jest znaleźć korelacje pomiędzy atrybutami.
Innym sposobem na wizualizacje tego samego jest użycie parami wykresów rozrzutu pomiędzy atrybutami, które nas interesują.

Na przekątnej wyświetlane są histogramy dla poszczególnych atrybutów np. `alcohol`. Poza przekątną wyświetlane są punkty (X,Y), które reprezentują wartości numeryczne w zmiennych. Ta reprezentacja pozwala stwierdzić, czy dane 2 zmienne są liniowo zależne (czy występuję linia), czy może są one bardziej rozproszone. W naszych danych atrybuty są rozproszone.
Na podstawie powyższego wykresu można zauważyć, że wykresy rozproszenia są również dobrym sposobem na obserwowanie potencjalnych relacji lub wzorców w dwóch wymiarach dla atrybutów danych.
Ważną uwagą na temat wykresów rozrzutu parami jest to, że są one w rzeczywistości symetryczne. Wykres rozrzutu dla dowolnej pary atrybutów (X, Y) wygląda inaczej niż dla tych samych atrybutów w (Y, X) tylko dlatego, że skale pionowa i pozioma są różne. Nie zawiera on żadnych nowych informacji.
###### Wizualizacja kategorycznego atrybutu danych
Na zbiorze danych wprowadzamy dodatkową zmienną kategoryczną: ```color_intensity_label```, która mówi o jakości wina w następująch regułach:
Atrybut ```color_intensity_label='low'``` gdy ```color_intensity``` mniejszy bądź równy od 5.
Atrybut ```color_intensity_label='medium'``` gdy ```color_intensity``` większy od 5 i mniejszy od 7.
Atrybut ```color_intensity_label='low'``` gdy ```color_intensity``` większy bądź równy od 7.
Oto przykład kodu generujący nowy atrybut:
```python
data['color_intensity_label'] = data['color_intensity'].apply(lambda value: 'low' if value <= 5 else 'medium' if value <= 7 else 'high')
```
Teraz można narysować rozkład procentowy dla nowej zmiennej kategorycznej:

Wykres wygenerowany powyżej jest jasny i zwięzły i pozwala łatwo porównać kategorie.
Dodatkowo należy przyjąć, że atrybut ```color_intensity``` jest oznaczany przez 3 kolory:
| color_intensity_label | color |
| --------------------- | ------ |
| low | green |
| medium | orange |
| high | red |
#### Wizualizacja danych w trzech wymiarach (3-D)
Biorąc pod uwagę trzy atrybuty lub wymiary w danych, można je wizualizować poprzez rozważenie wykresu rozrzutu parami i wprowadzenie pojęcia koloru lub odcienia, aby oddzielić wartości w wymiarze kategorycznym.
Oto przykład:

Powyższy wykres pozwala na sprawdzenie korelacji i wzorców, a także porównanie wokół grup intensywności koloru.
##### Wizualizacja trzech ciągłych - liczbowych atrybutów.
Teraz przyjrzyjmy się strategiom wizualizacji trzech ciągłych, numerycznych atrybutów. Jednym ze sposobów jest posiadanie dwóch wymiarów reprezentowanych jako regularna długość (oś x) i szerokość (oś y), a także przyjęcie pojęcia głębokości (oś z) dla trzeciego wymiaru.
Można również nadal korzystać z regularnych osi 2-D i wprowadzić pojęcie wielkości jako trzeciego wymiaru (zasadniczo wykres bąbelkowy), gdzie wielkość kropek wskazuje wielkość atrybutu ```magnesium```.

Tak więc można zobaczyć, jak wykres powyżej nie jest konwencjonalny wykres rozproszenia, ale bardziej wykres bąbelkowy z różnych wielkości punktów (pęcherzyki) na podstawie stężenia magnezu.
##### Wizualizacja danych w czterech wymiarze (4-D)
Przedstawiony wyżej wywód wyraźnie wskazuje, że do wizualizacji wielu wymiarów można wykorzystać różne komponenty wykresów. Jednym ze sposobów wizualizacji danych w czterech wymiarach jest użycie głębi i barwy jako specyficznych wymiarów danych w konwencjonalnym wykresie, takim jak wykres rozrzutu.

Ponadto, podczas gdy interpretacja tych wizualizacji zaczyna być trudna ze względu na złożony charakter działek, nadal można zebrać podstawowe obserwacje.
Inną strategią jest zachowanie dwuwymiarowego wykresu, ale użycie barwy i rozmiaru punktu danych jako wymiarów danych. Zazwyczaj byłby to wykres bąbelkowy podobny do tego, który wizualizowaliśmy wcześniej.

Używamy barwy do reprezentowania ```color_intensity_label```, a wielkości punktu danych do reprezentowania ```malic_acid```. Znacząco poprawia to czytelność danych.
Dla wyższych wymiarów 5D, 6D jest również istnieje
możliwość wizualizowania danych, jednak to wychodzi poza zakres tego artykułu.
###### Podsumowanie
Głównym celem tego artykułu było przedstawienie kilku skutecznych strategii wizualizacji danych, szczególnie gdy liczba wymiarów zaczyna wzrastać. Zachęcam Cię do wykorzystania tych fragmentów do wizualizacji Twoich własnych zbiorów danych w przyszłości.
Wizualizacje do tego artykułu zostały przygotowane w Colabie:
https://colab.research.google.com/drive/1517B6MO2guvK8km54KEPl-ePUEFoHcjI?usp=sharing