Menu
CoddyTech

復習:迷惑メールフィルター

CoddyのMachine Learningジャーニー「教師あり学習」セクションの一部。レッスン 20/58。

challenge icon

チャレンジ

中級

この章の冒頭で作成したスパムフィルターを構築しましょう。emails.csvには200通のメールが含まれています。項目はlinks、exclaims、caps_words、from_contact(既知の送信者なら1)、words、spamです。プログラムはしきい値を読み取ります。

  1. テスト用に4分の1を取り分け(random_state=0)、訓練データでスケーリングし、LogisticRegressionを学習させます。テスト精度を(小数点以下3桁で)出力します。
  2. しきい値に基づき、テストメールのうちスパムに振り分けられた数、その中に含まれる実際のメールの数、そしてすり抜けたスパムの数を数えます。
  3. スパムであることを示す最も強い証拠と、その重み(小数点以下2桁)を出力します。

別のサービスで、しきい値が0.7の場合:

Test accuracy: 0.884
At 0.7: 15 emails to spam (1 of them real), 4 spam let through
Strongest spam evidence: links (1.38)

自分で試してみよう

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

emails = pd.read_csv("emails.csv")
features = ["links", "exclaims", "caps_words", "from_contact", "words"]
threshold = float(input())

# 以下にコードを書いてください

教師あり学習のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ