-
[PlayData - Day 53] 트리 알고리즘[플레이데이터] 2023. 3. 9. 17:37
1. K-Digital Training 과정
- 빅데이터 기반 지능형SW 및 MLOps 개발자 양성과정 19기 (Day 53)
2. 목차
- 결정 트리
- 교차 검증과 그리드 서치
- 트리의 앙상블
3. 수업 내용
5-1.ipynb0.63MB5-2.ipynb0.23MB5-3.ipynb0.01MB세 가지 특성을 가진 와인 데이터셋을 가지고 이진 분류를 하고자 함
앞선 챕터에서 배운 로지스틱 회귀로 분류 실시
로지스틱 회귀로 와인 분류하기
데이터를 불러온 후 데이터 형태 확인하기 : pandas의 메서드 이용
1. head() 함수: 처음 5개의 샘플 확인
import pandas as pd wine = pd.read_csv('https://bit.ly/wine_csv_data') wine.head() # 레드와인 0, 화이트와인 1
2. info() 함수: 데이터프레임 각 열의 데이터 타입과 누락된 데이터 정보 확인
wine.info()
각 열(Column)의 데이터타입(Dtype)은 모두 float 타입이고, null 데이터가 없는 것을 확인할 수 있다.
3. describe() 함수
wine.describe()
각 컬럼별 평균, 표준편차, 최소, 최대, 사분위수를 확인할 수 있다.
- pandas 데이터프레임을 numpy 배열로 변환하고 훈련 세트와 테스트 세트로 나누기
data = wine[['alcohol', 'sugar', 'pH']].to_numpy() target = wine['class'].to_numpy() from sklearn.model_selection import train_test_split train_input, test_input, train_target, test_target = train_test_split( data, target, test_size=0.2, random_state=42) # test_size=0.2, 즉 테스트 세트의 비율 20% print(train_input.shape, test_input.shape) >>> (5197, 3) (1300, 3) # 세트가 잘 나누어진 것을 확인할 수 있다.
- 표준화 작업(스케일링, Scaling)
# 표준화 작업 from sklearn.preprocessing import StandardScaler ss = StandardScaler() ss.fit(train_input) train_scaled = ss.transform(train_input) test_scaled = ss.transform(test_input) # 표준 점수로 세가지 특성 데이터의 스케일을 다 맞추어 주었다. # 표준화 작업을 마친 데이터로 로지스틱 회귀 훈련, 평가 from sklearn.linear_model import LogisticRegression lr = LogisticRegression() lr.fit(train_scaled, train_target) print('훈련', lr.score(train_scaled, train_target)) print('테스트', lr.score(test_scaled, test_target)) >>> 훈련 0.7808350971714451 테스트 0.7776923076923077 # 테스트 세트보다 훈련 세트의 정확도가 조금 더 높으나, 전반적으로 낮다. 과소적합.
설명하기 쉬운 모델과 어려운 모델
print(lr.coef_, lr.intercept_) >>> [[ 0.51270274 1.6733911 -0.68767781]] [1.81777902]
위의 결과로 로지스틱 회귀모델을 설명하려면?
['alcohol', 'sugar', 'pH' ]
[ 0.51270274, 1.6733911, -0.68767781]
- 알콜도수와 당도가 높을수록 화이트와인일 가능성이 높고, pH가 높을수록 레드와인일 가능성이 높다
이 숫자의 의미를 쉽게 설명할 수 있도록 하려면 결정 트리를 이용하자.
결정 트리
...업데이트중
'[플레이데이터]' 카테고리의 다른 글
[PlayData - Day 82~83] 가상환경 생성 및 서버 연결 (0) 2023.04.19 [PlayData - Day 81] 빅데이터 이해와 파일럿 프로젝트 (0) 2023.04.18 [PlayData - Day 52] 다양한 분류 알고리즘 (0) 2023.03.09 [PlayData - Day 51] 회귀 알고리즘과 모델 규제 (0) 2023.03.09 [PlayData - Day 50] 머신러닝 시작, 데이터 다루기 (0) 2023.03.08