새소식

AIVLE School DX 3기

[에이블스쿨 6주차] 머신러닝4

  • -
728x90
반응형

🤔object형 변수를 모두 가변수화할 수 있나요?

물론이죠!

방법 1)
x = pd.get_dummies(x, drop_first=True)

방법 2)
cols = x.dtypes()
dumm_clos = list(clos.loc[cols.values=='object].index)
dumm_clos

기타) 지정해서 가변수화
dumm_cols = ['가변수화할 칼럼']
x = pd.get_dummies(x, columns=dumm_clos, drop_first=True)

 

학습 데이터, 평가 데이터 모두 정규화를 시켜줘야 합니다

  • 학습데이터의 최소/최댓값으로 평가데이터를 정규화해야 됩니다!

 

분류는 f1, 회귀는 r2

 

MinMax로 정규화1

# 모듈 불러오기
from sklearn.preprocessing import MinMaxScaler

# 정규화
scaler = MinMaxScaler()
scaler.fit(x_train)
x_train = scaler.transform(x_train)
x_test = scaler.transform(x_test)

MinMax로 정규화2

x_train = scaler.fit_transform(x_train)
x_test = scaler.transform(x_test) # fit_transform() 사용하면 안됨!!!

🌲Decision Tree

- 결정 트리, 의사 결정 나무
- 정규화를 할 필요가 없다!
- 분석 과정을 눈으로 볼 수 있다(화이트박스 모델)
- 의미 있는 질문을 먼저하는 것이 중요
- 과적합으로 모델 성능이 떨어지기 쉬움(크리 크기를 제한)

강사님의 모동숲 토킹: 순정 뽀야미가 비싸다

 

하이퍼파라미터 값 조정

파라미터 설명
⭐max_depth 트리의 최대 깊이(기본값: None)
min_samples_split 노드를 분할하기 위한 최소한의 샘플 개수(기본값: 2)

[부모 노드를 자르는 기준]
min_samples_leaf 리프 노드가 되기 위한 최소한의 샘플 수(기본값: 1)

[자식 노드에 들어가는 샘플 수]
max_feature 최선의 분할을 위해 고려할 Feature 수(기본값: None)

[우리는 random_stae=1로 지정해서 동일한 결과로 나오게 실습을 진행합니다]
max_leaf_node 리프 노드 최대 개수

 

트리 시각화

- 적절한 figsize
- 불순도가 낮을수록 진한 배경색
# 시각화 모듈 불러오기
from sklearn.tree import plot_tree

fig = plt.figure(figsize=(12, 10))
plot_tree(model,
		filled=True,
		feature_names=x.columns, 
		class_names=y.unique(),
		fontsize=10)
plt.show()
# 시각화 모듈 불러오기
from sklearn.tree import export_graphviz
from IPython.display import Image

# 이미지 파일 만들기
export_graphviz(model,                                 # 모델 이름
                out_file='tree.dot',                   # 파일 이름 
                feature_names=x.columns,               # Feature 이름
                class_names=['die', 'survived'],       # Target Class 이름  # 회귀는 필요XX
                rounded=True,                          # 둥근 테두리
                precision=2,                           # 불순도 소숫점 자리수
                filled=True)                           # 박스 내부 채우기

# 파일 변환
!dot tree.dot -Tpng -otree.png -Gdpi=300

# 이미지 파일 표시
Image(filename='tree.png')

지니 불순도

지니 불순도 = 1 -(양성클래스 비율^2 + 음성 클래스 비율^2)

Decision Tree를 썼다면 변수 중요도와 트리를 확인해보고, 변수 중요도를 얻고자 Decision Tree를 쓰진 말자


모델 key point
L.R 독립변수들이 많을 때 모델이 복잡해짐
* 중요하지 않은 변수 제거, 필요한 변수 추가
KNN k가 데이터 갯수면 평균이 된다 → 단순
(k가 클수록 단순하게 됨)
DST max_depth가 클수록 복잡(과대적합 시 성능 저하)
* 정보 이득 : 부모 노드 불순도 - 자식 노드 불순도
* 정보 이득이 크다 = 불순도가 낮다

Logistic Regression(이름에 조심!!)

(-∞,∞) 범위를 갖는 선형 판별식 결과로 (0,1) 범위의 확률 값을 얻게 됨

 

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.