Materiały ze szkolenia 26/02/19: From small data in Python to Big Data model in Apache Spark.
Notebook wprowadzający do Jupyter Notebooks (z przykładowymi typami wykorzystywanymi w Pythonie). Notebook kończy się zadaniem polegającym na implementacji funkcji zwracającej informacje o tym, czy podana liczba jest parzyta, czy nieparzysta.
def odd_or_even(number: int) -> str:
if number % 2 == 0:
return 'even'
else:
return 'odd'
Notebook wprowadzający do DataFrameAPI
w pyspark
. Prezentuje sposoby wczytywania zbiorów danych (SQL
, csv
). Przedstawia podstawowe operacje, które możemy wykonywać na DataFrameAPI
:
Notebook wprowadzający do DataFrameAPI
w pyspark
. Prezentuje sposoby wczytywania zbiorów danych (sql
, csv
) i dokonywania podstawowych operacji, m.in. stosowaniu udf
(user-defined functions) na wybranych kolumnach, dodawaniu nowych kolumn, filtrowaniu zbiorów danych na podstawie informacji o wartości kolumny, łączeniu i sortowaniu tabel, etc.
Notebook kończy ćwiczenie polegające na implementacji własnej funkcji, która przypisze zero-jedynkową flagę wskazującą na typ płatności. Przykładowa implementacja:
from pyspark.sql.types import IntegerType
from pyspark.sql.functions import udf
def payment_type(value):
mapping = {'Cash': 1, 'Credit Card': 0}
return mapping[value]
udf_payment_type = udf(payment_type, IntegerType())
# simple query with *udf* function
taxi.select(udf_payment_type(taxi.payment_type)).show(10)
Notebook, którego celem jest przygotowanie danych do modelowania. Zauważmy jednak, że proponowany sposób przygotowania zbioru danych, który zostanie wykorzystany na etapie modelowania, może implikować problem leaku informacyjnego przy niektórych metodach feature engineering
. Np. wyznaczenie wartości kwantyli zmiennej trip_miles
na całej tabeli - po dokonaniu podziału na zbiór treningowy i testowy - będzie przenosiło informację do zbioru testowego.
Notebook, którego celem jest wprowadzenie do MLLib
. Podstawowe informacje dot. MLLib
:
- działa wyłącznie z danymi w postaci numerycznej,
- instancje klas modeli
ML
wymagają definicji zmiennych objaśniających (w postaci nazwy będącej wynikiem zastosowaniaVectorAssembler
) i zmiennej objaśnianej, API
zbliżone do konwencji stosowanej wscikit-learn
, tj..fit
,.transform
, etc.
Notebook prezentuje sposób stosowania klas wykorzystywanych w preprocessingu, tj. VectorAssembler
, Binarizer
, StringIndexer
, OneHotEncoder
, etc. W sekcji dotyczącej modelowania wykorzystano klasę LogisticRegression
. Następnie, poszukiwano optymalnych wartości hyperparametrów modelu z wykorzystaniem CrossValidator
i ParamGridBuilder
.
Zaproponowaną miarą oceny performance modeli był błąd na zbiorze testowym mierzony jako 1 - accuracy
:
- wypełnienie samymi zerami:
0.462161
, - regresja logistyczna na wszystkich zmiennych:
0.40878
, - regresja logistyczna po feature engineering (6 cech):
0.022286
, - regresja logistyczna po feature engineering i optymalizacji hyperparameters:
0.022286
.
Notebook, którego celem jest wprowadzenie do budowania Pipeline
w pyspark
. Powtórzono proces budowy modelu z poprzedniego notebooka z wykorzystaniem klasy Pipeline
(dzięki temu możemy uniknąć problemu z leakiem informacyjnym, o którym wspominano wcześniej). Notebook został dodany poglądowo (bez egzekucji komórek).