StandardScaler()
사용.from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
iris_scaled = scaler.fit_transform(iris_df)
iris_df_scaled = pd.DataFrame(iris_scaled, columns=iris.feature_names)
MinMaxScaler()
사용.from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaled = scaler.fit_transform(data)
항목 | 표준화 | 정규화 |
---|---|---|
방식 | 평균 0, 표준편차 1 | 최소~최대 0~1 |
분포 | 그대로 유지 | 그대로 유지 |
이상치 | 강함 | 약함 |
사용 시점 | 평균/표준편차가 의미 있을 때 | 값의 절대 크기가 중요할 때 |
import numpy as np
log_df = np.log(num_df)
KNeighborsClassifier()
사용.from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import classification_report
# 데이터 전처리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
scaler = StandardScaler()
X_train_std = scaler.fit_transform(X_train)
X_test_std = scaler.transform(X_test)
# 모델 훈련
knn = KNeighborsClassifier()
knnc = knn.fit(X_train, y_train)
y_pred = knnc.predict(X_test)
print(classification_report(y_test, y_pred))
F1-score
에 주목!항목 | 요점 |
---|---|
표준화 | 평균0, 표준편차1로 변환, 이상치에 강함 |
정규화 | 0~1로 압축, 이상치 제거 필수 |
로그변환 | 양의왜도 완화, 정규성 확보 |
KNN | 거리 기반 분류, 스케일링 필수, 데이터 불균형 주의 |
---ㅇㅇ
이번 시간에는 머신러닝을 실무에 적용하는 관점에서 문제를 예측 가능한 형태로 바꾸는 사고법을 배웠어요. 특히 지도학습 vs. 비지도학습, 그리고 실제 실무 문제를 어떻게 모델링으로 전환할지에 대한 실습을 중심으로 진행됐습니다.
복잡한 패턴을 학습해 예측하거나, 데이터 안에서 의미 있는 구조를 발견하는 기술
구분 | 설명 |
---|---|
전통 방식 | Rule 기반 (사람이 규칙 직접 설정) |
ML 방식 | 규칙 없이 데이터에서 자동 학습 |
종류 | 설명 | 실무 예시 |
---|---|---|
Supervised Learning (지도학습) | Y값(정답)이 존재 | 분류, 회귀 |
Unsupervised Learning (비지도학습) | Y값 없이 구조 분석 | 군집화, 이상치 탐지 |
기타 | Semi-supervised, 강화학습 등 | 고급 응용 분야 |
모델 | 결과 유형 | 실무 활용 |
---|---|---|
Logistic Regression | 분류 (0/1) | 이탈 예측 |
Linear Regression | 수치 예측 | 의료비 예측 |
Random Forest / XGBoost | 복합 예측 | 고성능 모델링 |
K-means / DBSCAN | 클러스터링 | 고객 세그먼트 분석 |
정답(Y)이 있는 문제를 예측하고 싶을 때!
단계 | 예시 질문 | 실무 포인트 |
---|---|---|
① 예측 대상이 있는가? | 고객 이탈 여부? | Y값 필요 |
② 없다면 정의할 수 있는가? | 30일 이상 미접속 = 이탈 | Y값 생성 가능 여부 |
③ 예측 시점은 언제인가? | 가입 후 7일 데이터로 | 데이터 누수 방지 중요 |
④ 사용 데이터는? | 클릭수, 연령, 활동량 등 | Feature 설계 |
⑤ 예측 결과의 활용? | 이탈 방지 마케팅 타겟팅 | 목적 연결 필수 |
df['churn'] = df['last_login_days'] > 30 # Y값 생성
last_login_days
는 Y 생성에만 사용하고, 예측 변수로 쓰면 안됨정답(Y) 없이, 패턴을 찾고 싶을 때!
단계 | 예시 질문 | 실무 포인트 |
---|---|---|
① 정답이 없나? | 고객을 나눌 수 있을까? | Label 없음 |
② 그룹화 기준은? | 구매 패턴, 방문 빈도 | X값 기반 |
③ 설명 가능성은? | 군집 특징 도출 가능? | Insight 필요 |
④ 전략 활용은? | 군집별 캠페인 | 실용성 연결 |
--