条件概率
本课属于 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你已经知道的条件写在分数线下面:用它来做除数。垃圾邮件过滤器就是这样工作的:根据邮件中的词语计算它是垃圾邮件的概率。
挑战
中等某个市场记录了 50 天的数据,保存在 mornings.csv 中:早晨的 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 在线编译器