始める無料で始める

不正なのは送信元か、それとも宛先か?

前のレッスンでは、注目するエンティティとして「宛先」のコンピュータを使いました。しかし、サイバーセキュリティのアナリストから、悪性トラフィックを発生させるのは感染したマシンであり、flows データセットでは宛先ではなく「送信元」として現れると聞きました。

データ flows はすでに読み込まれており、感染したIDのリスト bad と、前のレッスンで使った特徴量抽出器 featurizer() も用意されています。さらに、numpynp として、AdaBoostClassifier()cross_val_score() も利用できます。

この演習はコースの一部です

Python で設計する Machine Learning ワークフロー

コースを見る

演習の手順

  • flows データセットを送信元コンピュータIDでグループ化し、各グループに特徴量抽出器を適用して、各行が source_computer の特徴ベクトルとなるデータフレームを作成します。
  • イテレーターに対して list() を呼び出し、データフレームに変換します。
  • 与えられた不正IDリストに各 source_computer のIDが含まれるかどうかを確認して、ラベルを作成します。
  • cross_val_score() を使って、このデータに対する AdaBoostClassifier() の性能を評価します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Group by source computer, and apply the feature extractor
out = flows.____('source_computer').____(featurize)

# Convert the iterator to a dataframe by calling list on it
X = pd.DataFrame(____, index=____)

# Check which sources in X.index are bad to create labels
y = [x in bads for x in ____]

# Report the average accuracy of Adaboost over 3-fold CV
print(np.mean(____(____, X, y)))
コードを編集して実行