1.1 Struktura zbioru danych
Last updated
Last updated
Najpopularniejszym obecnie źródłem zbiorów danych jest repozytorium UCI ML. Założyli je, początkowo jako serwer FTP, jeszcze pod koniec lat 80. absolwenci Uniwersytetu Kalifornijskiego w Irvine.
Skorzystamy więc z niego, aby zdobyć zbiór Iris. Znajdziemy go na stronie głównej jako pierwszą na liście najczęściej odwiedzanych zbiorów danych.
Po odwiedzeniu strony zbioru zobaczymy jego opis, zadania w których jest przydatny, liczbę cech, instancji, opis parametrów i (zaznaczone na czerwono) łącze do pobrania.
Sam zbiór, w postaci pliku CSV, znajdziemy pod łączem do pliku iris.data
. Nie ściągajmy go na dysk, a tylko skopiujmy hiperłącze do niego.
Tak przygotowani możemy wczytać zbiór w skrypcie w języku Python.
W pierwszej linijce importujemy moduł pandas, ułatwiający operacje na zbiorach danych, następnie odkładamy do zmiennej
url
znalezioną na UCI ML ścieżkę do pliku csv i wreszcie wczytujemy ramkę danych do zmiennejpd
.
Tak wczytany zbiór możemy wyświetlić na ekranie.
Jak widać, we wczytanym zbiorze znajduje się sto pięćdziesiąt wierszy (wzorców, obiektów), każdy po pięć kolumn. Wyświetlmy pojedynczy wzorzec.
Zgodnie z opisem zbioru na stronie UCI, Pierwsze cztery elementy naszego obiektu są wektorem cech wzorca, a ostatni jego etykietą, którą będziemy mogli posłużyć się później w procesie uczenia naszego algorytmu rozpoznawania wzorców.
Cały zbiór danych możemy zatem podzielić na:
przestrzeń cech — zbiór wszystkich wektorów cech obiektów znajdujących się w zbiorze (zwyczajowo oznaczamy go przez X
),
zbiór etykiet — zawierający etykiety dla obiektów znajdujących się w zbiorze (zwyczajowo oznaczamy go przez y
).
Zwróć uwagę, że
X
jest wielkie, ay
małe.
Dokonajmy więc podziału wczytanego zbioru danych na X
i y
. Zapiszemy je już nie jako ramki danych (tak nazywamy struktury obsługiwane przez pandas
), a jako tablice numpy
.
Do zmiennej
data
odkładamy za pośrednictwem atrybutuvalues
tablicęnumpy
ze wszystkimi wartościami z ramkidf
. Tablice tego typu adresujemy podobnie jak robiliśmy to w języku Matlab. Adres podajemy w nawiasie kwadratowym, a po przecinkach wymieniamy pozycje w kolejnych wymiarach tablicy. Do zmiennejX
przypisujemy więc wszystkie wiersze (:
) i wszystkie kolumny poza ostatnią (:-1
). Z kolei do zmiennejy
przypisujemy wszystkie wiersze (:
) ale tylko ostatnią kolumnę (-1
).
Wyświetlmy jeszcze naszą przestrzeń cech X
i zbiór etykiet y
.
Warto zapamiętać, że każda tablica numpy
zawiera parametr shape
, który pozwala nam poznać jej wymiary przestrzenne. Widzimy dzięki temu, że nasza przestrzeń cech ma 150 wierszy po 4 kolumny, a zbiór etykiet, po prostu 150 elementów.