Inżynieria cech na danych pogrupowanych
Teraz rozwiniesz poprzednie ćwiczenie, uwzględniając jedną dodatkową cechę: liczbę unikalnych protokołów używanych przez każdy komputer źródłowy. Pamiętaj, że w przypadku danych pogrupowanych zawsze można konstruować cechy w ten sposób: możesz wziąć liczbę unikalnych elementów wszystkich kolumn kategorycznych oraz średnią wszystkich kolumn numerycznych jako punkt wyjścia. Podobnie jak wcześniej, masz dostęp do wczytanego flows, funkcji cross_val_score() do mierzenia dokładności, AdaBoostClassifier(), biblioteki pandas jako pd i numpy jako np.
To ćwiczenie jest częścią kursu
Projektowanie przepływów pracy uczenia maszynowego w Pythonie
Instrukcje do ćwiczenia
- Zastosuj funkcję
lambdana dostarczonym iteratorze grupowym, aby obliczyć liczbę unikalnych protokołów używanych przez każdy komputer źródłowy. Możesz użyćset(), aby zredukować kolumnęprotocoldo zbioru unikalnych wartości. - Przekształć wynik do ramki danych o odpowiednim kształcie, podając indeks i nazywając kolumnę
protocol. - Połącz nową ramkę danych ze starą, dostępną jako
X. - Oceń dokładność
AdaBoostClassifier()na tym nowym zbiorze danych, używająccross_val_score().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Create a feature counting unique protocols per source
protocols = flows.groupby('source_computer').apply(
lambda df: ____)
# Convert this feature into a dataframe, naming the column
protocols_DF = pd.DataFrame(
protocols, index=____, columns=____)
# Now concatenate this feature with the previous dataset, X
X_more = pd.concat([X, ____], axis=____)
# Refit the classifier and report its accuracy
print(____(____(
AdaBoostClassifier(), ____, y)))