Kolejnym elementem z kategorii „trzeba znać” w kontekście uczenia maszynowego jest Scikit-Learn. Nie jest to narzędzie istniejąca same w sobie, ale jest to biblioteka języka Python.
Wszechstronność
Najważniejszym atutem biblioteki Scikit-Learn jest jej wszechstronność. Jest to aktualnie najbardziej rozwinięta biblioteka, która oferuje:
- klasyfikację
- regresję
- redukcję wymiarowości
- analizę skupień
- przetwarzanie danych
- porównywanie modeli
Jeżeli więc któreś z zagadnień, z którymi planujesz się uporać, znajduje się tutaj, to możesz poczuć się jak w domu.
Dojrzałość
Scikit-Learn ma już 12 lat. W świecie open source oznacza to, że takie oprogramowanie albo stało się fundamentalnie użytecznym narzędziem i komuś się chce je utrzymywać, albo jest to staroć i działa tylko dlatego, że się jeszcze nie zepsuł. W naszym przypadku jest to scenariusz numer jeden.
Co więcej, Scikit-Learn jest aktywnie rozwijany i mimo wieku, daleko mu od bycia przestarzałym. Mam nawet wrażenie, że projekt ten nagromadził w sobie tyle różnych doświadczeń, że staje się wzorcem rozwoju wolego oprogramowania do uczenia maszynowego. Bardzo dobrym tego przykładem jest planowanie porzucenia jakiejś funkcjonalności API. Nigdy nie jest to robione „po cichu”. Standardem tutaj jest wyświetlanie ostrzeżeń, że to, co działa teraz, przestanie działać w ciągu dwóch kolejnych wydań i powinieneś mieć to na uwadze. Wbrew pozorom nie jest to, aż tak częsta praktyka jak by się można spodziewać.
Wady
Oczywiście, jakkolwiek biblioteka Scikit-Learn nie byłaby fajna, warto mieć na uwadze jej potencjalne wady. Pierwszą wadą, a dla niektórych nawet argumentem blokującym dalsze działanie jet to, że biblioteka ta jest biblioteką programistyczną. Oznacza to, że nie da się jej użyć jako samodzielnego programu, tylko trzeba odpowiednio napisać nasz program z jej użyciem. A w tym programie musimy zająć się np. wczytywaniem danych, analizą uzyskanych wyników i ich prezentacją. Scikit-Learn będzie się fajnie tutaj integrować, samodzielnie musimy jednak zadbać o całą bardziej ludzką otoczkę.
Drugą wadą, którą zaobserwowałem, jest brak wsparcia dla GPU. Biblioteka ta powstała, zanim używanie GPU stało się popularne. I podejrzewam, że w którymś momencie jej rozwoju, programiści postanowili nie integrować wsparcia dla GPU, gdyż okazało się, że są inne projekty, które akurat tę część uczenia maszynowego realizują już bardzo dobrze. I myślę, że jest to dobra decyzja. Fakt, fajnie było mieć również tę możliwość dostępną z poziomu Scikit-Learn. Wciąż jednak możemy integrować się z innymi bibliotekami, które wspierają GPU. Wada ta nie musi być więc wcale taka znacząca.
Scikit-Learn — Podsumowanie
Jeżeli postanowiłeś postawić na język Python i jesteś na tym blogu, to nie mogę Ci nie zarekomendować sprawdzenia biblioteki Sckikit-Learn. Nawet jeśli zdarzy się tak, że nie będziesz jej za często używał w codziennej pracy, to ogólne zaznajomienie się z jej używaniem może dać dużo ogólnych pomysłów odnośnie rozwiązywania problemów przy pomocy uczenia maszynowego. Tutaj jest to po prostu zrealizowane we wzorcowy i przemyślany sposób. Jeśli Cię przekonałem, to sprawdź jeszcze ten artykuł, w którym rozpisałem się nieco bardziej o Scikit-Learn.