개발? 새발!
개발? 새발!

Scikit-Learn으로 시작하는 머신러닝 여정 (feat. 진짜 쉬움)

2025.12.13

Scikit-Learn으로 시작하는 머신러닝 여정 (feat. 진짜 쉬움)

요즘 AI 개인화가 핫하다는 기사를 보다가
Scikit-Learn 이라는 라이브러리 이름을 보게 됐어요

사실 머신러닝 라이브러리는 여러가지가 있는데
Scikit-Learn은 그 중에서도 정말 쉽게 시작할 수 있는 라이브러리라서
오늘은 이 라이브러리에 대해 이야기해보려고 해요

관련 이미지 1

이미지 출처: velog

Scikit-Learn이 뭔데?

Scikit-Learn은 Python 기반의 오픈소스 머신러닝 라이브러리예요
sklearn이라고도 불리는데, 이름만 봐도 알 수 있듯이 "학습(learn)"을 도와주는 도구죠

진짜 좋은 점은 NumPy, pandas랑 찰떡궁합이라는 거!
데이터 전처리부터 모델 학습, 평가까지 한 번에 할 수 있어서
초보자가 머신러닝 시작하기에 딱이에요

API가 엄청 심플하고 일관적이거든요?
한 번 익숙해지면 다른 알고리즘도 똑같은 방식으로 쓸 수 있어요

어떤 알고리즘을 지원하는데?

Scikit-Learn이 지원하는 알고리즘은 정말 다양해요

분류(Classification)
- 로지스틱 회귀
- SVM (Support Vector Machine)
- 결정 트리
- 랜덤 포레스트

회귀(Regression)
- 선형 회귀
- 릿지 회귀
- 라쏘 회귀

클러스터링(Clustering)
- k-Means
- DBSCAN
- 계층형 클러스터링

차원 축소
- PCA (주성분 분석)
- t-SNE

웬만한 건 다 있어서 작은~중간 규모 데이터셋 다룰 때는 Scikit-Learn만으로도 충분해요
대용량 데이터나 딥러닝이 필요하면 그때 TensorFlow나 PyTorch를 고려하면 되고요


실제로 어떻게 쓰는데?

Scikit-Learn의 핵심은 Estimator 패턴이에요
모든 모델이 fit()으로 학습하고, predict()나 transform()으로 예측/변환하는 구조죠

간단한 분류 모델 예시

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris


데이터 로드

iris = load_iris()
X, y = iris.data, iris.target


학습/테스트 데이터 분리

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)


모델 생성 및 학습

model = LogisticRegression()
model.fit(X_train, y_train)


예측

predictions = model.predict(X_test)


정확도 확인

accuracy = model.score(X_test, y_test)
print(f"정확도: {accuracy:.2f}")

이게 끝이에요!
진짜 몇 줄 안 되죠?

관련 이미지 2

이미지 출처: DEEPLINK CORE Lab_

주요 모듈들 살펴보기

Scikit-Learn은 기능별로 모듈이 잘 나뉘어져 있어요

sklearn.datasets
내장된 예제 데이터셋을 제공해줘요
붓꽃(iris), 와인, 손글씨 숫자 등등
연습용으로 딱이에요

sklearn.preprocessing
데이터 전처리할 때 쓰는 모듈이에요
정규화, 스케일링, 원-핫 인코딩 같은 거 여기서 다 해요

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X_train)

sklearn.model_selection
교차 검증이나 하이퍼파라미터 튜닝할 때 필수!
GridSearchCV로 최적의 파라미터를 찾을 수 있어요

from sklearn.model_selection import GridSearchCV

param_grid = {
    'C': [0.1, 1, 10],
    'kernel': ['linear', 'rbf']
}

grid_search = GridSearchCV(SVC(), param_grid, cv=5)
grid_search.fit(X_train, y_train)

print(f"최적 파라미터: {grid_search.best_params_}")

sklearn.ensemble
랜덤 포레스트, AdaBoost 같은 앙상블 모델들이 여기 있어요
단일 모델보다 성능 좋을 때가 많아서 자주 써요

from sklearn.ensemble import RandomForestClassifier

rf_model = RandomForestClassifier(n_estimators=100)
rf_model.fit(X_train, y_train)

실제 개발 흐름은?

Scikit-Learn으로 머신러닝 프로젝트 진행할 때의 전형적인 흐름은 이래요

1. 데이터 준비

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

2. 데이터 전처리

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

3. 모델 학습

from sklearn.svm import SVC

model = SVC(kernel='rbf', C=1.0)
model.fit(X_train_scaled, y_train)

4. 평가

from sklearn.metrics import accuracy_score, classification_report

predictions = model.predict(X_test_scaled)
print(f"정확도: {accuracy_score(y_test, predictions):.2f}")
print(classification_report(y_test, predictions))

관련 이미지 3

이미지 출처: YouTube

이 흐름이 거의 모든 Scikit-Learn 프로젝트에서 반복돼요
한 번 익숙해지면 다른 알고리즘으로 바꿔도 똑같은 패턴이라 편해요

왜 Scikit-Learn을 추천하는가

문서가 정말 잘 되어 있어요
공식 문서에 예제도 엄청 많고
한국어 번역 프로젝트도 진행 중이라서
영어 부담도 덜해요

커뮤니티가 활발해요
오픈소스라 무료인 건 당연하고
Stack Overflow나 GitHub Issues 보면
웬만한 문제는 다 해결책이 있어요

실무에서 많이 써요
특히 Kaggle 같은 데이터 분석 대회에서
Scikit-Learn 안 쓰는 사람 거의 없어요

데이터 사이언스 실무자들도
빠른 프로토타이핑이나 베이스라인 모델 만들 때
Scikit-Learn 먼저 써보는 경우가 많아요


한계도 있긴 해요

물론 만능은 아니에요

딥러닝은 안 돼요
CNN, RNN 같은 신경망 모델이 필요하면
TensorFlow나 PyTorch를 써야 해요

대용량 데이터는 버거워요
메모리에 다 올려야 해서
정말 큰 데이터셋은 처리가 힘들어요
그럴 땐 Spark MLlib 같은 걸 고려해야죠

GPU 가속이 기본적으로 안 돼요
요즘 cuML 같은 GPU 기반 대안도 나오긴 했지만
Scikit-Learn 자체는 CPU 기반이에요

관련 이미지 4

이미지 출처: YouTube

하지만 작은~중간 규모 데이터로
전통적인 머신러닝 알고리즘 쓸 거면
Scikit-Learn이 최고의 선택이에요

마무리하며

Scikit-Learn은 머신러닝 입문자에게 정말 좋은 라이브러리예요
API가 직관적이고 문서도 잘 되어 있어서
빠르게 결과물을 만들어볼 수 있거든요

요즘은 AI 개인화니 뭐니 해서
머신러닝이 더 핫해지고 있잖아요?
Scikit-Learn으로 기본기 다지면
나중에 더 복잡한 것도 쉽게 이해할 수 있을 거예요

공식 문서 한번 훑어보면서
간단한 예제부터 따라해보는 거 추천해요!


이전 글 보기

AVPlayer 분석하기 - 동영상 플레이어 뜯어보기

ARC(Automatic Reference Counting) - Swift 메모리 관리의 핵심

이 블로그의 다음 이야기도 받아보세요

새 글 구독 (RSS)