Särdragsframtagning på grupperade data
Nu ska du bygga vidare på föregående övning genom att lägga till ytterligare ett särdrag: antalet unika protokoll som används av varje källdator. Observera att med grupperade data är det alltid möjligt att konstruera särdrag på det här sättet – du kan utgå från antalet unika element i alla kategoriska kolumner och medelvärdet av alla numeriska kolumner. Precis som tidigare är flows förinläst, liksom cross_val_score() för att mäta noggrannhet, AdaBoostClassifier(), pandas som pd och numpy som np.
Den här övningen är en del av kursen
Att designa maskininlärningsflöden i Python
Övningsinstruktioner
- Applicera en
lambda-funktion på den tillhandahållna grupperingsiteratorn för att beräkna antalet unika protokoll per källdator. Du kan användaset()för att reducera kolumnenprotocoltill en mängd unika värden. - Konvertera resultatet till en dataram med rätt form genom att ange ett index och namnge kolumnen
protocol. - Sammanfoga den nya dataramen med den gamla, som finns tillgänglig som
X. - Utvärdera noggrannheten hos
AdaBoostClassifier()på det nya datasetet med hjälp avcross_val_score().
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)))