Skalowanie na dużą skalę
W poprzednim ćwiczeniu przeskalowałeś metodą min-max jedną zmienną. Co jednak zrobić, gdy zmiennych do przeskalowania jest bardzo dużo? Pisanie osobnych linii kodu dla każdej z nich mija się z celem. Rozbudujmy poprzednie ćwiczenie i zamieńmy tę logikę w funkcję.
To ćwiczenie jest częścią kursu
Inżynieria cech z PySpark
Instrukcje do ćwiczenia
- Zdefiniuj funkcję o nazwie
min_max_scaler, która przyjmuje parametry:df– ramkę danych orazcols_to_scale– listę kolumn do przeskalowania. - Użyj pętli
for, aby przejść przez każdą kolumnę z listy i przeskalować ją metodą min-max. - Zwróć ramkę danych
dfz dodanymi nowymi kolumnami. - Wywołaj funkcję
min_max_scaler()na ramcedfi liście kolumncols_to_scale.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
def ____(____, ____):
# Takes a dataframe and list of columns to minmax scale. Returns a dataframe.
for col in ____:
# Define min and max values and collect them
max_days = df.agg({col: 'max'}).collect()[0][0]
min_days = df.agg({____: 'min'}).collect()[0][0]
new_column_name = 'scaled_' + col
# Create a new column based off the scaled data
df = df.withColumn(____,
(df[____] - min_days) / (max_days - min_days))
return ____
df = min_max_scaler(____, ____)
# Show that our data is now between 0 and 1
df[['DAYSONMARKET', 'scaled_DAYSONMARKET']].show()