Analiza Danych

Środowisko pracy Data Science w Python

Każdy specjalista ma swój własny ulubiony zestaw narzędzi i warsztat pracy. Przy okazji uruchomienia kolejnej wersji środowiska wirtualnego Python dla Data Science postanowiłem podzielić się z Wami swoim podstawowym zestawem narzędzi.

Conda jako środowisko pracy

Ze względu na system operacyjny MS Windows najwygodniejszym środowiskiem jest dla mnie Conda. Przede wszystkim dlatego, że mam do dyspozycji gotowe, stabilne, przetestowane paczki działające pod Windows’em i nie muszę tracić czasu na ich kompilacje (co nie zawsze jest bezproblemowe), czy też ściągać pliki wheel lub egg. Oczywiście nie wszystko znajduje się w repozytoriach Conda, ale do dyspozycji mamy ciągle PyPI.

Dodatkowe kanały z paczkami, które należy dodać do standardowej instalacji Conda:

conda config --add channels conda-forge
conda config --add channels microsoft

Stworzenie środowiska wirtualnego w conda o nazwie „myenv310” i jego aktywacja:

conda create --name myenv310 python=3.10
activate py310

Opisane niżej środowisko możecie zainstalować u siebie dwoma liniami komend:

conda install jupyterlab numpy pandas openpyxl xlrd matplotlib seaborn scipy statsmodels scikit-learn jsonpickle geoplot ipywidgets tslearn pyodbc sqlalchemy pymysql py-xgboost shap
pip install azure-cosmos
pip install mlrose borutashap

JupyterLab – środowisko analityczne

źródło: https://jupyterlab.readthedocs.io/en/stable/

JupyterLab to zintegrowana platforma do uruchamiania skryptów Jupyter Notebook. Praca z wieloma notebook’ami jest dużo bardziej komfortowa, niż w przypadku środowiska Jupyter. Dodatkowe okna do wykonywania skryptów „na boku” i wyświetlające wyniki działania komórek Jupyter’a umożliwiają ograniczenie wzrostu entropii w głównym skrypcie.

Eksploracja danych

Pandas + NumPy

Biblioteka Pandas jest fundamentalnym i najpopularniejszym narzędziem do operacji na danych. Oprócz możliwości odczytu danych z praktycznie każdego źródła (m.in. dzięki sterownikom ODBC) udostępnia zaawansowane narzędzia transformacji, filtrowania i sortowania danych, a także ich wizualizacji (za pomocą biblioteki matplotlib).

Struktury danych w Pandas są oparte na macierzach zdefiniowanych w bibliotece NumPy, która jest sercem Data Science w Python. Zawiera zoptymalizowane algorytmy do obliczeń numerycznych na wielowymiarowych strukturach danych. Praktycznie każda biblioteka naukowa wymaga NumPy do działania.

Biblioteki niezbędne do połączenia się Pandas’a z popularnymi bazami danych:

  • pyodbc – umożliwia połączenie z bazami danych poprzez sterowniki ODBC
  • SQLAlchemy – interfejs do baz relacyjnych SQL i mapowania ORM
  • PyMySQL – biblioteka do połączenia się z MySQL
  • xlrd – paczka niezbędna do otwarcia arkuszy MS Excell przez Pandas

Wizualizacja danych

Matplotlib

źródło: https://matplotlib.org/gallery/statistics/histogram_features.html

Matplotlib jest podstawową biblioteką do generowania wszelkich wykresów w Python. Z biblioteki tej korzystają inne specjalizowane nakładki do wizualizacji danych.

Seaborn

źródło: http://seaborn.pydata.org/examples/jitter_stripplot.html

Seaborn to biblioteka do wizualizacji danych bazująca na matplotlib i dostarczająca wiele gotowych szablonów wykresów statystycznych. Wykresy wygenerowane w Seaborn są przyjemniejsze dla oka w porównaniu do tych generowanych w matplotlib z powodu nieźle dobranych kolorów i typografi.

Modele statystyczne i obliczenia numeryczne

SciPy

SciPy to zestaw narzędzi do obliczeń naukowych. Biblioteka zawiera algorytmy do obliczeń numerycznych, statystycznych, optymalizacji, czy np. procesowania sygnałów.

Statsmodels

Statsmodels jest bardzo rozbudowaną biblioteką dostarczającą narzędzia do analizy statystycznej danych, tworzenia modeli statystycznych, np. analizy szeregów czasowych.

mlrose

Biblioteka mlrose to zestaw narzędzi do rozwiązania typowych zadań numerycznych jak problem komiwojażera czy upakowania plecaka. Zawiera implementacje algorytmów generycznych, czy wspinaczkowych. Ma zastosowanie w optymalizacji wag sieci neuronowych, czy parametrów tradycyjnych modeli uczenia maszynowego.

Uczenie maszynowe (Machine Learning)

scikit-learn

Biblioteka scikit-learn to podstawa uczenia maszynowego w Python. Zawiera algorytmy do uczenia nadzorowanego i nienadzorowanego (np. lasy losowe, SVM, k-średnie, DBSCAN, etc.) , transformacji danych (normowanie, standaryzacja), testy i metryki dla trenowanych modeli, a także algorytmy do optymalizacji parametrów modeli.

XGBoost (py-xgboost)

XGBoost to bardzo popularny algorytm uczenia nadzorowanego, który zdominował konkursy na Kaggle ze względu na jakość wyników i wydajność obliczeniową. Jest implementacją algorytmu drzew decyzyjnych zwiększając jego skuteczność i szybkość uczenia. Biblioteka py-xgboost jest jego implementacją w środowisku Conda.

SHAP

źródło: https://shap.readthedocs.io/en/latest/

SHAP (SHapley Additive exPlanations) to biblioteka przeznaczona do graficznego wyjaśniania działania modeli uczenia maszynowego. Niemożność racjonalnego wyjaśnienia wyników działania skomplikowanych algorytmów często prowadzi do zaniechania, a wręcz niechęci biznesu do używania tzw. „czarnych skrzynek”, które pozostają poza kontrolą osób decyzyjnych.

NLP

conda install unidecode spacy gensim pyldavis wordcloud