Jupyter Notebook jest jednym z najbardziej popularnych notebooków w świecie Data Science. Umożliwia szybkie pisanie i dzielenie się kodem. Do tej pory nie było odpowiednika dla programistów JavaScript, ale ostatnio to się zmieniło. Pojawiło się nowe rozwiązanie — Dnotebook.
Społeczność na Facebooku
Jeśli jesteś zainteresowany tematem uczenia maszynowego, to zapraszam do grupy na fb. Aby ją odwiedzić kliknij tutaj
Skąd popularność notebooków?
Zanim opiszę bibliotekę Dnotebook, warto się zastanowić skąd taka popularność aplikacji typu notebook. Składa się na to kilka czynników. Po pierwsze prostota korzystania oraz dzielenia się wynikami. Kolejna rzecz to możliwość dzielenia, w prosty sposób, naszego kod na mniejsze kawałki bez konieczności pisania funkcji i wywoływania ich. Przyspiesza to proces pisania i modyfikowania kodu. No i mając tak podzielone dane, jesteśmy w stanie sprawdzać po kolei wyniki oraz wizualizować je w postaci wykresów. Jest to o tyle ważne w Data Science, że musimy pilnować danych i tego, jak je modyfikujemy, zanim zaczniemy wykonywać na nich konkretne algorytmy.
Dnotebook
Wyżej wymienione powody wskazują, dlaczego tak się cieszę, że powstało rozwiązanie dla JavaScript. Dnotebook jest bardzo młodym rozwiązaniem, ale pokazuje, że popularność JavaScript w obszarze Data Science będzie rosnąć. Mamy już biblioteki, powstają kolejne narzędzia, które mają ułatwić pracę, więc popularność będzie tylko rosła. W przypadku Dnotebook mamy dwie możliwości korzystania z notebooka:
- możemy skorzystać z wersji online (do znalezienia tutaj)
- lub też zainstalować go z npm’a
W przypadku instalacji lokalnie najprościej zainstalować go globalnie, dzięki czemu uruchomimy go zawsze, gdy potrzebujemy. I to nie tylko do zastosowań czysto Data Science, ale również do codziennych zastosowań.
npm install -g dnotebook
Mamy wtedy dostęp do globalnej komendy dnotebook
która uruchamia notebooka na porcie 4400 [http://localhost:4400](http://localhost:4400/)
Fajną funkcjonalnością jest możliwość eksportowania i importowania plików notebooka — znajduje się ona w pozycji Options
w górnym menu. Przygotowałem dla was przykładowy plik, który pokazuje możliwości biblioteki i znajdziecie go tutaj
Funkcjonalności Dnotebooka
Podstawowa funkcjonalność jest charakterystyczna dla notebooków, czyli możliwość tworzenia małych kawałków kodu (komórek) i możliwość uruchamiania ich pojedynczo. Jest to wygodne, ponieważ można podzielić kod na mniejsze kawałki, uruchamiać po kolei i patrzeć na wyniki. Oprócz wstawiania kodu możemy też wstawiać komórki z tekstem (wykorzystujemy tutaj Markdown) - będzie to przydatne, gdy będziemy tworzyć jakieś zadania czy też będziemy chcieli opisać krok lub wyniki.
Możemy też przesyłać zmienne pomiędzy komórkami tylko musimy pamiętać by dać wtedy taką zmienną jako var
(const
i let
zadziałają tylko w obrębie komórki, ale nie będą już widoczne w innych komórkach).
Kolejną mega ważną funkcjonalnością jest możliwość ładowania zewnętrznych bibliotek przy pomocy funkcji load_package()
. Po załadowaniu biblioteki mamy dostęp do jej metod (musimy tylko pamiętać, by sprawdzić w Readme biblioteki, pod jaką zmienną globalną zostaną one ustawione) np.:
load_package(["https://www.lactame.com/lib/ml/4.0.0/ml.min.js"])
//Po załadowaniu mamy dostęp do zmiennej globalnej ML
var numberOfGroups = 2
var ans = ML.KMeans(df.data, numberOfGroups)
W ten sposób można ładować dowolną inną bibliotekę np.: Tensorflow. Na starcie mamy załadowaną bibliotekę Dafno.js pod zmienną dfd
. Pomaga ona w przechowywaniu i operowaniu na danych — jest odpowiednikiem biblioteki Pandas ze świata pythona. Oprócz możliwości ładowania zewnętrznych bibliotek mamy kilka innych przydatnych funkcji:
table(df)
- wyświetla dane w formie tabularycznej. Uwaga: dane muszą być przekazane jako obiekt Dafno.jsload_csv(url)
- pobiera csv spod adresu url i jako rezultat zwraca obiekt Dafno.jsthis_div()
- zwraca id komórki z rezultatem dla aktualnej komórki, przydatne w sytuacji, gdy musimy wyświetlić wykres
Pomimo tego, że jest to naprawdę świeża biblioteka, to posiada już podstawowe funkcjonalności. Czasem pojawiają się problemy z dodawaniem nowej komórki czy uruchamianiem jej, ale są to błędy, które można na razie wybaczyć. Mam nadzieję, że będzie się dalej rozwijała i stanie się podstawowym narzędziem w Data Science dla języka JavaScript. A może znacie inny/lepszy notebook, który można wykorzystać z językiem JavaScript?