条件付き確率
CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 17/64。
この10通のメールの半分はスパムです。しかし、メールにリンクがあるとわかったら、リンクがあるメールだけが重要です。
そのグループ内の割合が、リンクがあるという条件でのスパムの条件付き確率、P(spam | link)です。両方を数えたあと、条件の数で割ります。
emails = pd.DataFrame({
"link": ["yes", "no", "yes", "no", "no", "no", "yes", "no", "no", "yes"],
"spam": ["yes", "no", "yes", "no", "no", "yes", "no", "no", "yes", "yes"],
})
spam = emails["spam"] == "yes"
link = emails["link"] == "yes"
print(spam.mean())
print((spam & link).sum() / link.sum())これは次のように出力されます:
0.5
0.75すでに知っている条件は線の下に置きます。その条件で割ります。スパムフィルターはこのように機能します。メールの単語が与えられたときに、スパムである確率です。
チャレンジ
中級ある市場では、mornings.csvに50日分の記録があります。朝のsky(clear、cloudy、またはfoggy)とrainです。後で雨が降った場合はyesです。どの空模様が最もよい手がかりになりますか?
skiesの各空模様について、その空模様の日に雨が降る確率を出力します。- 任意の日に雨が降る確率を出力します。
- 最もよい手がかり、つまり確率が最も高い空模様を出力します。
記録が短い場合は、小数点以下2桁で表示します。
Rain after a clear morning: 0.25
Rain after a cloudy morning: 0.33
Rain after a foggy morning: 0.75
Rain on any day: 0.45
Best clue for rain: foggy自分で試してみよう
import pandas as pd
days = pd.read_csv("mornings.csv")
skies = ["clear", "cloudy", "foggy"]
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
機械学習のための統計のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ