
정답(라벨)이 있는 데이터를 보고 입력→정답 간 규칙을 학습해, 보지 못한 입력의 정답을 예측하는 방법이다.

분류: 입력 데이터를 주어진 클래스(label)로 분류하는 문제
예: 스팸 이메일 분류, 이미지 분류 등
회귀: 연속적인 값을 예측하는 문제("회귀==예측"이라 보면 됨)
예: 주택 가격 예측, 주식 가격 예측 등
분류(Classification)는 주어진 데이터를 특정 클래스(또는 레이블)로 나누는 머신러닝의 대표적인 지도 학습(Supervised Learning) 문제 유형이다. 분류 모델은 입력 데이터의 특징을 학습하여 미지의 데이터가 속하는 클래스를 예측한다.

1) 로지스틱 회귀
2) k-NN
3) 나이브 베이즈
4) 결정트리 / 랜덤포레스트 / 그라디언트부스팅(XGBoost/LightGBM 등)
5) SVM
6) 신경망(MLP)
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split, StratifiedKFold, cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
from sklearn.metrics import classification_report, roc_auc_score, roc_curve
import numpy as np
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=42, test_size=0.2)
pipe = Pipeline([
("scaler", StandardScaler()),
("clf", LogisticRegression(max_iter=1000, class_weight="balanced"))
])
# 교차검증(정확도)
cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
print("CV acc:", cross_val_score(pipe, X, y, cv=cv, scoring="accuracy").mean())
# 학습/평가
pipe.fit(X_train, y_train)
y_pred = pipe.predict(X_test)
y_prob = pipe.predict_proba(X_test)[:, 1]
print(classification_report(y_test, y_pred, digits=3))
print("ROC-AUC:", roc_auc_score(y_test, y_prob))
회귀 분석이란 독립 변수와 종속 변수의 관계를 분석하는 것이다. 머신 러닝에서 독립 변수는 feature이고, 종속 변수는 label이다. 즉, 피처와 레이블 사이의 관계를 분석하는 것이다.

1) 선형/정규화 회귀
2) 다항 특성 + 선형
3) 트리/랜덤포레스트/그라디언트부스팅
4) SVR
5) 신경망(MLPRegressor 등)
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split, KFold, cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
from sklearn.pipeline import Pipeline
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
import numpy as np
X, y = fetch_california_housing(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42, test_size=0.2)
pipe = Pipeline([
("scaler", StandardScaler()),
("reg", Ridge(alpha=1.0))
])
cv = KFold(n_splits=5, shuffle=True, random_state=42)
print("CV RMSE:", (-cross_val_score(pipe, X, y, cv=cv, scoring="neg_root_mean_squared_error")).mean())
pipe.fit(X_train, y_train)
pred = pipe.predict(X_test)
print("RMSE:", mean_squared_error(y_test, pred, squared=False))
print("MAE :", mean_absolute_error(y_test, pred))
print("R2 :", r2_score(y_test, pred))
Stratified 분할 권장StandardScalerclass_weight, 언더/오버샘플링(SMOTE), 임계값 최적화RandomizedSearchCV → 필요 시 GridSearchCV모델 선택의 핵심은 “데이터 모양·문제 유형·규모·제약” 4가지를 보고 무난한 출발 모델 → 한 단계 업그레이드 순서로 고르는 것이다.
로지스틱 회귀(LogisticRegression)릿지(Ridge)이 둘은 빠르고 튼튼하며 과적합을 억제하는 정규화가 내장되어 있다. “기준 점수”를 만드는 데 최고다.
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression, Ridge
from sklearn.pipeline import Pipeline
# 분류 기준선
clf_baseline = Pipeline([("scaler", StandardScaler()),
("clf", LogisticRegression(max_iter=1000))])
# 회귀 기준선
reg_baseline = Pipeline([("scaler", StandardScaler()),
("reg", Ridge(alpha=1.0))])
랜덤포레스트(RandomForest), 그라디언트 부스팅(Gradient Boosting, XGBoost/LightGBM)from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor
clf = RandomForestClassifier(n_estimators=300, random_state=42)
reg = RandomForestRegressor(n_estimators=300, random_state=42)
나이브 베이즈(멀티노미얼), 로지스틱 회귀, 선형 SVM(LinearSVC)TfidfVectorizer로 벡터화 → 선형 모델을 얹는다.from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
text_clf = make_pipeline(TfidfVectorizer(),
LogisticRegression(max_iter=2000))
SVM/SVR로지스틱/릿지 같은 선형 + 정규화 또는 k-NN신경망(딥러닝)class_weight='balanced' 또는 리샘플링(SMOTE/언더샘플링)from sklearn.metrics import precision_recall_curve
# y_prob = model.predict_proba(X_valid)[:,1]
prec, rec, thr = precision_recall_curve(y_valid, y_prob)
# 재현율 0.85 이상인 최소 임계값 찾기
import numpy as np
t = thr[np.argmax(rec[:-1] >= 0.85)]
y_pred = (y_prob >= t).astype(int)
1) 정답 형태를 본다
2) 데이터 형태를 본다
3) 데이터 크기·제약을 본다
4) 레이블 불균형/비용 민감이면
1) 문제 정의(분류/회귀, 사업 목표 지표)
2) 데이터 분할(train/valid/test, 누수 금지)
3) 기준선 모델로 점수 확보(로지스틱/릿지)
4) 특징 엔지니어링(스케일링·인코딩·결측 처리)
5) 후보 모델 시도(랜덤포레스트/부스팅/SVM 등)
6) 하이퍼파라미터 탐색(RandomizedSearch → Grid)
7) 임계값·비용 민감도 조정, 최종 리포트/에러 분석