Menu
CoddyTech

큰 수의 법칙

Coddy Machine Learning 여정의 머신러닝을 위한 통계 섹션에 포함된 레슨. 64개 중 14번째.

동전을 10번 던져 앞면이 8번 나와도 놀랄 일이 아닙니다. 계속 던지면 앞면의 비율은 0.5에 가까워집니다:

300번 던졌을 때 앞면 비율을 보여 주는 선 그래프: 처음에는 0.3과 1 사이에서 오르내리다가, 이후 확률 0.5를 나타내는 빨간색 점선에 가까워집니다

각 지점에는 지금까지의 비율이 필요합니다. np.cumsum은 누적 합계를 구합니다. 이를 지금까지의 던진 횟수로 나눕니다:

heads = np.array([True, False, True, True])
print(np.cumsum(heads))
print(np.round(np.cumsum(heads) / np.arange(1, 5), 2))

다음이 출력됩니다:

[1 1 2 3]
[1.   0.5  0.67 0.75]

ax.axhline(y)는 차트에 기준선을 가로로 그립니다:

ax.plot(np.arange(1, 301), share)
ax.axhline(0.5, color="red", linestyle="--")

이것이 바로 큰 수의 법칙입니다. 시도 횟수가 많을수록 확률에 가까워집니다. 20개의 샘플에서 좋은 점수를 받은 모델은 운이 좋았을 수도 있지만, 2000개에서는 그럴 가능성이 거의 없습니다.

challenge icon

챌린지

중급

시리얼 브랜드는 상자의 20%에 장난감을 숨깁니다. 프로그램은 몇 개를 열었는지 읽고, 시작 코드에서 toys(장난감이 있으면 True)를 채우고 차트에 레이블을 붙입니다.

  1. 장난감의 누적 비율을 계산합니다.
  2. 상자 10개를 연 뒤와 전체 상자를 연 뒤의 비율을 소수점 3자리까지 출력합니다.
  3. 상자 번호 1부터의 값에 대해 그래프로 그리고, 0.2 위치에 검은색 점선(":")을 추가한 뒤 표시합니다.

그 외 상자 80개에 대한 결과:

After 10 boxes: 0.1
After 80 boxes: 0.212

그리고 이 차트를 그립니다. 그런 다음 Coddy가 여러분의 결과를 설명합니다.

Toys in Cereal Boxes라는 제목의 차트: 80개 상자에 걸친 누적 비율은 8개 상자 동안 0에 머물다가 오르내린 후, 검은색 점선 0.2 근처에 자리 잡습니다.

직접 해보기

import numpy as np
import matplotlib.pyplot as plt

boxes = int(input())

# 아래 줄은 변경하지 마세요
rng = np.random.default_rng(25)
toys = rng.random(boxes) < 0.2

fig, ax = plt.subplots()
ax.set_title("Toys in Cereal Boxes")
ax.set_xlabel("Boxes opened")
ax.set_ylabel("Share with a toy")

# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

머신러닝을 위한 통계의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러