Masz działający komputer, prąd, jakiś pomysł, ale nie wiesz co dalej? Brakuje Ci podstawowych narzędzi i nie masz dobrego pomysłu skąd je pobrać. A na samą myśl o spędzeniu najbliższych godzin na instalowaniu różnych programów całkiem Ci się odechciewa? Nie przejmuj się! Zaraz się dowiesz jak sprytnie ugryźć ten temat.
Jeden, by nimi władać, Jeden, by je znaleźć,
Jeden, by je zgromadzić i wszystkie skrępować.Jedyny Pierścień – tłumaczenie: Maria i Cezary Frąc
Lenistwo
Analitycy zajmujący się danymi pod pewnymi względami są bardzo leniwi. Lubią rozmyślać nad zagadkami, naturą zjawisk i rozwiązywaniem problemów. Lubią również automatykę, która działa dokładnie wtedy kiedy jest im potrzebna. Lenistwo objawia się wtedy, gdy trzeba mozolnie przebudować środowisko pracy, znaleźć działającą wersję programu bądź sprawdzić, dlaczego wykres, który generował się wczoraj, nie generuje się po najnowszej aktualizacji. Bardzo tego nie lubią. I przy każdej nadarzającej się okazji szukają wspomnianej automatyki, która to „ogarnie”.
Temat nie jest nowy. Jeśli jesteś programistą, to masz zapewne swoje ulubione IDE i jakiś manager bibliotek. Administratorzy systemów Linux korzystają z managerów pakietów tak, samo jak oddychają — naturalnie i praktycznie bezwiednie. A jeśli ktoś potrzebuje stworzyć dokument w systemie LaTeX, to też nie szuka ręcznie każdej możliwej paczki renderującej, tylko użyje systemu TeX Live albo czegoś podobnego. Jak więc widzisz, całkiem dużo codziennych technologii IT wywodzi się m.in. z lenistwa.
Anaconda
Nie inaczej jest przy pracy z danymi. Ludzie wymyślali i wciąż wymyślają różne systemy ułatwiające pracę. Jednym z takich systemów jest Anaconda. Występuje w wersjach Anaconda Enterprise i Anaconda Distribution. Ta pierwsza jest płatna i dedykowana dla dużych infrastruktur. Nas natomiast interesuje wersja druga (Anaconda Distribution), która jest darmowa do dowolnych zastosowań (również biznesowych) i w sam raz pasuje do komputerów osobistych. Pobierzesz ją dla swojego systemu stąd. Sugestia – wybieraj zawsze wersję z Pythonem 3. Wersja z Pythonem 2 już w praktyce jest przestarzała, jest natomiast wciąż dostępna dla projektów, które jeszcze nie migrowały na Pythona 3.
Co dostajemy w zestawie?
Najważniejszą zaletą platformy Anaconda jest dostępność całej masy bibliotek języka Python dedykowanych pracy z danymi:
- Jupyter – IDE dedykowane nieliniowemu eksperymentowaniu
- Spyder – IDE typowo programistyczne
- NumPy – biblioteka do obliczeń numerycznych
- SciPy – biblioteka do obliczeń naukowych
- Numba – kompilator pomagający budować kod do obliczeń rozproszonych
- Pandas – biblioteka do przetwarzania danych
- Dask – biblioteka do obliczeń równoległych
- Bokeh – biblioteka do interaktywnych wizualizacji
- HoloViews – biblioteka do bardziej klasycznych wizualizacji
- Datashader – bibliotedka do wizualizacji dużych zbiorów danych
- Matplotlib – biblioteka do całkiem klasycznych wykresów
- Scikit-Learn – biblioteka do uczenia maszynowego
- H2O – platforma do uczenia maszynowego
- TensorFlow – biblioteka do uczenia głębokiego
- Conda – system do zarządzania wszystkim powyższym
Oprócz tego dostajemy całą masę innych mniej znanych bibliotek oraz kompletne środowisko do pracy z językiem R – R Studio.
Czego nam brakuje?
Anaconda nie jest platformą idealną. Największe braki, jakie zauważyłem to brak systemów do big data i bibliotek do CUDA. Systemów big data nie ma pewnie dlatego, że ta wersja platformy jest zaprojektowana do używania na laptopie/PC. A na takim sprzęcie dość trudno sensownie ugryźć temat big data. Brak bibliotek do CUDA wynika zapewne z zawiłości licencji, na jakiej są wydane i nieco nieprzewidywalnego sposobu ich budowania. Nic nie stoi jednak na przeszkodzie, żeby jeśli zajdzie taka potrzeba doinstalować je sobie w systemie i swobodnie korzystać.
Anaconda — Podsumowanie
Jeśli startujesz z projektem DS/ML/AI to w ciemno mogę Ci polecić platformę Anaconda. Znajdziesz tam prawie wszystko, czego potrzebujesz i zainstalujesz to jednym kliknięciem lub komendą w zależności od potrzeb. A kto wie, może się jeszcze nawet okazać, że Twoje skrypty śmigają szybciej niż w samodzielnie przygotowanym środowisku.