BASHA TECH

Ch4. 분류 본문

Computer/Machine Learning

Ch4. 분류

Basha 2022. 10. 13. 18:18
728x90

ch04.ipynb
0.01MB

1. 분류(Classification)의 개요

 

2. 결정 트리

- 결정 트리 모델의 특징

- 결정 트리 파라미터

- 결정 트리 모델의 시각화

- 결정 트리 과적합(Overfitting)

- 결정 트리 실습 - 사용자 행동 인식 데이터 세트

 

3. 앙상블 학습

- 앙상블 학습 개요

- 보팅 유형 - 하드 보팅(Hard Voting)과 소프트 보팅(Soft Voting)

- 보팅 분류기(Voting Classifier)

 

4. 랜덤 포레스트

- 랜덤 포레스트의 개요 및 실습

- 랜덤 포레스트 하이퍼 파라미터 및 튜닝

- GBM의 개요 및 실습

 

5. GBM(Gradient Boosting Machine)

- GBM 하이퍼 파라미터 소개

- XGBoost 개요

 

6. XGBoost(eXtra Gradient Boost)

- XGBoost 설치하기

- 파이썬 래퍼 XGBoost 하이퍼 파라미터

- 파이썬 래퍼 XGBoost 적용 - 위스콘신 유방암 예측

- 사이킷런 래퍼 XGBoost의 개요 및 적용

 

7. LightGBM

- LightGBM 설치

- LightGBM 하이퍼 파라미터

- 하이퍼 파라미터 튜닝 방안

- 파이썬 래퍼 LightGBM과 사이킷런 래퍼 XGBoost, LightGBM 하이퍼 파라미터 비교

- LightGBM 적용 - 위스콘신 유방암 예측

 

8. 베이지안 최적화 기반의 HyperOpt를 이용한 하이퍼 파라미터 튜닝

- 베이지안 최적화 개요

- HyperOpt 사용하기

- HyperOpt를 이용한 XGBoost 하이퍼 파라미터 최적화

 

9. 분류 실습 - 캐글 산탄데르 고객 만족 예측

- 데이터 전처리

- XGBoost 모델 학습과 하이퍼 파라미터 튜닝

- LightGBM 모델 학습과 하이퍼 파라미터 튜닝

 

10. 분류 실습 - 캐글 신용카드 사기 검출

- 언더 샘플링과 오버 샘플링의 이해

- 데이터 일차 가공 및 모델 학습/예측/평가

- 데이터 분포도 변환 후 모델 학습/예측/평가

- 이상치 데이터 제거 후 모델 학습/예측/평가

- SMOTE 오버 샘플링 적용 후 모델 학습/예측/평가

 

11. 스태킹 앙상블

- 기본 스태킹 모델

- CV  세트 기반의 스태킹

 

12. 정리

 

# anscombe dataset load
import seaborn as sns

anscombe = sns.load_dataset('anscombe')
anscombe
# 데이터 확인
anscombe.head()
anscombe.info()
anscombe['dataset']
# I 그룹 추출 
# 데이터 프레임에 대괄호 [] 들어가면 추출
# anscombe = [anscombe['dataset']=='I']
dataset_1 = anscombe[anscombe['dataset'] == 'I']
dataset_1
# dataset_1 => 데이터 시각화
import matplotlib.pyplot as plt

# plt.plot(x축에 들어갈 값 지정, y축에 들어갈 값 지정, **option) : 선그래프
# dataset_1['x']: x 컬럼 추출
plt.plot(dataset_1['x'], dataset_1['y'],'o') 
plt.show()

# plt.plot(x축에 들어갈 값 지정, y축에 들어갈 값 지정, **option) : 선그래프
# dataset_1['x']: x 컬럼 추출
plt.plot(dataset_1['x'], dataset_1['y'],'^') 
plt.show()

# 그래프 작성시 
# 데이터 추출
dataset_2 = anscombe[anscombe['dataset'] == 'II']
dataset_3 = anscombe[anscombe['dataset'] == 'III']
dataset_4 = anscombe[anscombe['dataset'] == 'IV']
#ctrl+shift+'-' : 셀이 잘림
# 1. 도화지 한 장을 준비 => figure(figsize=(행크기,열크기)) function
%matplotlib inline 
fig = plt.figure(figsize=(6,6))

# 2. 도화지 분할 => 2 x 2, 1 x 4, 4 x 1 => add_subplot(행,열,위치값) => 축 생성
ax1 = fig.add_subplot(2,2,1) #2x2로 분할하고 1 행렬에 들어가라 => 축이 return된다
ax2 = fig.add_subplot(2,2,2) #add_subplot => 축이 만들어짐
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)

# 3. 분할된 영역 그래프 작성 => plot(x,y,option) : 선그래프 작성
ax1.plot(dataset_1['x'],dataset_1['y'],'o')
ax2.plot(dataset_2['x'],dataset_2['y'],'o')
ax3.plot(dataset_3['x'],dataset_3['y'],'o')
ax4.plot(dataset_4['x'],dataset_4['y'],'o')

# title
fig.suptitle('Anscombe Data') # 타이틀 부여
fig.tight_layout() # 레이아웃을 겹쳐 보이게 처리

# 4. show()
plt.show()

# matplotlib 기본
# 1. hist
# 데이터 추출 => tips
tips = sns.load_dataset('tips')
tips.head()

tips.info() 
# category data => 범주형 데이터
# 히스토그램 : 연속값이여야 함.
# 1. 도화지 생성
fig = plt.figure()
axes1 = fig.add_subplot(1,1,1)
axes1.hist(tips['total_bill'], bins=10) # bins: 등분할 수 (분리할 칸수. 옆칸으로 분리해라)
axes1.set_title('Histogram of Total Bill')
axes1.set_xlabel('Freq')
axes1.set_ylabel('Total Bill')
plt.show()

# 히스토그램 : 연속값이여야 함.
# 1. 도화지 생성
fig = plt.figure()
axes1 = fig.add_subplot(1,1,1)
axes1.hist(tips['sex'], bins=10) # 성별 : 연속된 값이 아님
axes1.set_title('Histogram of Total Bill')
axes1.set_xlabel('Freq')
axes1.set_ylabel('Total Bill')
plt.show()
# 산점도 => scatter(x축, y축) (분포를 말한다, 축이 2개여야함.)
# total_bill, tips와의 관계 확인
scatter_fig = plt.figure()
axes1 = scatter_fig.add_subplot(1,1,1)
axes1.scatter(tips['total_bill'],tips['tip'])
axes1.set_title('Scatterplot of Total Bill vs Tip')
axes1.set_xlabel('Total Bill')
axes1.set_ylabel('Tip')
plt.show()

# Box Plot
# 성별 tip
boxplot_fig = plt.figure()
axes1 = boxplot_fig.add_subplot(1,1,1) 
axes1.boxplot(
    [
          tips[tips['sex'] == 'Female']['tip']
        , tips[tips['sex'] == 'Male']['tip']
    ]
)
axes1.set_xlabel('Sex')
axes1.set_ylabel('Tip')
plt.show()

tips[tips['sex'] == 'Female']['tip']
728x90
반응형
Comments