AIVLE School DX 3기
[에이블스쿨 6주차] 머신러닝4
김보통김보름
2023. 3. 9. 13:34
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