고래밥 이야기
7.1 앙상블 학습 본문
머신러닝 교과서 with 파이썬, 사이킷런, 텐서플로를 참고하여 작성하였습니다.
# 안보고 코드를 구현하려고 노력하였기에 변수가 각각 틀릴 수도 있습니다..
# 코드 다 암기하기. 실력이 급하다.
- 단일 분류기보다 앙상블이 더 오차가 적다는 것을 이항 분포를 통해서 보이기
from scipy.special import comb # 조합을 활용할 때 사용된다. combination의 comb이다.
import math
def ensemble_error(n_classifier, error):
k_start = math.ceil(n_classifier / 2) # 분류기 개수의 절반 이상이 예측이 틀린다면, 전체가 틀렸다고 할수 있으므로..! 가령 11개라면 6개 이상이 틀려야만이 앙상블이 틀린 것이다.
probs = [comb(n_classifier, k) *
error ** k *
(1 - error) ** (n_classifier - k)
for k in range(k_start, n_classifier + 1)] # range 자주 실수한다. 주의하길
return sum(probs)
ensemble_error(n_classifier = 11, error = 0.25)
0.03432750701904297 # 0.25보다 훨씬 작다.
- 위의 ensemble_error를 error에 따라 단일 분류기와 ensemble 비교하기
import numpy as np
import matplotlib.pyplot as plt
error_range = np.arange(0, 1+0.01 , 0.01) # np.arange 계속 틀린다..ㅠㅠ
error_probs = [ensemble_error(n_classifier = 11, error = error) for error in error_range]
plt.plot(error_range, error_probs)
plt.plot(error_range, error_range)
plt.legend(loc = "upper left") # labeling을 안해줬기 때문에 아무것도 안뜬다. plt.plot에 label로 넣어줘야한다.
plt.grid()
plt.show()
'데이터 분석 > 머신러닝 교과서 with 파이썬, 사이킷런, 텐서플로' 카테고리의 다른 글
10.3 최소 제곱 선형 회귀 모델 구현 (0) | 2022.01.19 |
---|---|
10.2 주택 데이터셋 탐색 (0) | 2022.01.18 |
Comments