2025.04.09 본_캠프 36일차

민동·2025년 4월 10일
1

본캠프

목록 보기
35/74

Python Standard 3회차 요약 | Feature Scaling, 로그변환, KNN 이상치 처리


Feature Scaling (스케일링)

표준화 (Standardization)

  • 평균이 0, 표준편차가 1이 되도록 데이터를 변환.
  • 분포는 그대로, 기준만 바뀜.
  • 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)

장점

  • 이상치에 비교적 강함.
  • KNN, SVM, 로지스틱 회귀 등 대부분의 ML 모델에서 필요.

정규화 (Normalization)

  • 모든 데이터를 0~1 사이로 압축.
  • MinMaxScaler() 사용.
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
scaled = scaler.fit_transform(data)

주의점

  • 이상치에 매우 취약함.
  • 정규화 전 이상치 제거 필수!

비교 요약표

항목표준화정규화
방식평균 0, 표준편차 1최소~최대 0~1
분포그대로 유지그대로 유지
이상치강함약함
사용 시점평균/표준편차가 의미 있을 때값의 절대 크기가 중요할 때

로그 변환 (Log Transformation)

목적

  • 양의 왜도(Positive Skew)를 갖는 데이터를 정규분포에 가깝게 만듬.
  • 큰 값을 줄이고, 작은 값은 조금만 줄임.
import numpy as np

log_df = np.log(num_df)

로그 함수 특징

  • 값이 커질수록 기울기가 줄어듦 → 데이터 분포가 평탄해짐.

이상치 처리 - KNN 기반 분류

KNN (K-최근접 이웃)

  • 거리 기반 분류 알고리즘.
  • 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거리 기반 분류, 스케일링 필수, 데이터 불균형 주의

---ㅇㅇ

파이썬 Challenge반 5회차 | 머신러닝 문제 정의 사고법

이번 시간에는 머신러닝을 실무에 적용하는 관점에서 문제를 예측 가능한 형태로 바꾸는 사고법을 배웠어요. 특히 지도학습 vs. 비지도학습, 그리고 실제 실무 문제를 어떻게 모델링으로 전환할지에 대한 실습을 중심으로 진행됐습니다.


머신러닝(ML)이란?

복잡한 패턴을 학습해 예측하거나, 데이터 안에서 의미 있는 구조를 발견하는 기술

구분설명
전통 방식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값 생성
  • 예측 시점: 가입 후 7일간 행동 데이터
  • last_login_days는 Y 생성에만 사용하고, 예측 변수로 쓰면 안됨

비지도학습 문제 정의 프로세스

정답(Y) 없이, 패턴을 찾고 싶을 때!

단계예시 질문실무 포인트
① 정답이 없나?고객을 나눌 수 있을까?Label 없음
② 그룹화 기준은?구매 패턴, 방문 빈도X값 기반
③ 설명 가능성은?군집 특징 도출 가능?Insight 필요
④ 전략 활용은?군집별 캠페인실용성 연결

머신러닝 문제 설계 체크리스트

  • 예측 대상(Y값)은 존재하는가?
  • 없다면 정의할 수 있는가?
  • 예측 시점은 명확한가? (→ 데이터 누수 방지)
  • 예측 결과는 실무에 어떻게 활용되는가?

--

profile
아자아자

0개의 댓글