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

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

이미지 출처: 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}")
이게 끝이에요!
진짜 몇 줄 안 되죠?

이미지 출처: 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))

이미지 출처: 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 기반이에요

이미지 출처: YouTube
하지만 작은~중간 규모 데이터로
전통적인 머신러닝 알고리즘 쓸 거면
Scikit-Learn이 최고의 선택이에요
마무리하며
Scikit-Learn은 머신러닝 입문자에게 정말 좋은 라이브러리예요
API가 직관적이고 문서도 잘 되어 있어서
빠르게 결과물을 만들어볼 수 있거든요
요즘은 AI 개인화니 뭐니 해서
머신러닝이 더 핫해지고 있잖아요?
Scikit-Learn으로 기본기 다지면
나중에 더 복잡한 것도 쉽게 이해할 수 있을 거예요
공식 문서 한번 훑어보면서
간단한 예제부터 따라해보는 거 추천해요!
이전 글 보기