只接代码演示好了:
import operator
import numpy as np
import matplotlib.pyplot as plt
from functools import reduce
def cal(n, k):
# 返回排列组合的:从总体中选取若干的个体排列组合总数
return reduce(operator.mul, range(n - k + 1, n + 1)) / reduce(operator.mul, range(1, k + 1))
def bagMonitor(n, p):
# n代表了模拟的试验次数,每一次实验相互独立, p为每一次实验成功的概率
s = 0
for i in range(int(n/2) + 1, n + 1):
s += cal(n, i) * (p ** i) * ((1 - p) ** (n - i))
return s
if __name__ == "__main__":
# 只要保证P的概率大于0.5,那么经过有限多次的实验后,我们说该事件发生的概率就趋近1,这也是机器学习中经常
# 说的,top5,top3等的准确率会提高的原因
for i in range(1, 1001, 10):
s = bagMonitor(i, 0.55)
print(i, "次采样的正确率:", s)