BASHA TECH
Ch4. 분류 본문
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']
'Computer > Machine Learning' 카테고리의 다른 글
xg boost 설치 & light gbm 설치 (0) | 2022.10.17 |
---|---|
앙상블 학습 Ensemble Learning (0) | 2022.10.14 |
Human Activity Recognition Using Smartphones Data Set (0) | 2022.10.13 |
Pima indian diabetes : 피마 인디언 당뇨병 예측 (0) | 2022.10.13 |
Ch3. 평가 (0) | 2022.10.12 |