파이썬 라이브러리 Scikit-learn 완벽 가이드

AI와 머신러닝을 배우기 시작하면서 가장 먼저 접하게 되는 도구 중 하나가 바로 Scikit-learn입니다. Scikit-learn은 파이썬 머신러닝 라이브러리로, 간단하면서도 강력한 기능을 제공해 데이터 분석과 모델 학습을 쉽게 시작할 수 있습니다. 이번 포스팅에서는 Scikit-learn의 기본 개념부터 실습 예제까지, 처음 사용하는 분들을 위해 친절히 설명드리겠습니다.


1. Scikit-learn이란?

Scikit-learn은 파이썬 기반의 머신러닝 라이브러리로, 다음과 같은 장점을 제공합니다:

  • 쉽고 직관적인 API: 코드 몇 줄로 복잡한 머신러닝 모델을 구현 가능.
  • 다양한 알고리즘: 분류, 회귀, 군집화, 차원 축소 등 다양한 머신러닝 알고리즘 지원.
  • 호환성: NumPy, Pandas, Matplotlib 등과 잘 통합됨.
  • 오픈소스: 무료로 사용 가능하며, 활발한 커뮤니티 지원.

2. 설치 방법

Scikit-learn 설치는 매우 간단합니다. 아래 명령어를 실행하세요:

pip install scikit-learn
직접 실행 결과.

설치가 완료되면 다음 코드를 통해 버전을 확인할 수 있습니다:

import sklearn
print(sklearn.__version__)
1.6.0 직접 실행 결과

3. Scikit-learn의 주요 구성 요소

Scikit-learn은 크게 4가지 핵심 구성 요소로 나뉩니다:

1) 데이터셋 (Datasets)

  • 내장된 샘플 데이터셋을 제공해 초보자가 쉽게 실습할 수 있도록 돕습니다.
  • 예: load_iris(), load_diabetes(), load_digits() 등.

2) 전처리 (Preprocessing)

  • 데이터를 정규화하거나 결측치를 처리하는 도구 제공.
  • 예: StandardScaler (표준화), MinMaxScaler (정규화).

3) 모델링 (Modeling)

  • 다양한 머신러닝 알고리즘을 구현할 수 있음.
  • 예: LinearRegression (회귀), KNeighborsClassifier (분류).

4) 평가 및 선택 (Evaluation)

  • 학습된 모델을 평가하기 위한 다양한 함수 제공.
  • 예: accuracy_score (정확도), confusion_matrix (혼동 행렬).

4. Scikit-learn 기본 사용법

아래는 Scikit-learn으로 머신러닝 모델을 만드는 전체 과정을 단계별로 설명합니다:

1) 데이터 준비

Scikit-learn의 내장 데이터를 사용하거나, Pandas를 통해 데이터를 불러옵니다.

from sklearn.datasets import load_iris

# Iris 데이터셋 로드
data = load_iris()
X = data.data  # 입력 데이터
y = data.target  # 레이블 (타겟)

2) 데이터 분할

데이터를 학습용(train)과 테스트용(test)으로 분리합니다.

from sklearn.model_selection import train_test_split

# 데이터를 80% 학습용, 20% 테스트용으로 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

3) 모델 학습

모델을 선택하고 학습합니다. 예를 들어, K-최근접 이웃(KNN) 모델을 사용해 보겠습니다.

from sklearn.neighbors import KNeighborsClassifier

# KNN 모델 생성 및 학습
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)

4) 예측 및 평가

테스트 데이터를 사용해 모델 성능을 평가합니다.

from sklearn.metrics import accuracy_score

# 테스트 데이터 예측
y_pred = model.predict(X_test)

# 정확도 출력
accuracy = accuracy_score(y_test, y_pred)
print(f"모델 정확도: {accuracy:.2f}")

5. Scikit-learn 실습 예제: Iris 데이터셋 분류

Iris 데이터셋을 사용해 간단한 분류 문제를 풀어보겠습니다.

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report

# 1. 데이터 로드
data = load_iris()
X, y = data.data, data.target

# 2. 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 3. KNN 모델 학습
model = KNeighborsClassifier(n_neighbors=5)
model.fit(X_train, y_train)

# 4. 예측 및 평가
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred, target_names=data.target_names))

결과 출력 예시

              precision    recall  f1-score   support

      setosa       1.00      1.00      1.00        16
  versicolor       0.94      1.00      0.97        16
   virginica       1.00      0.94      0.97        14

    accuracy                           0.98        46
   macro avg       0.98      0.98      0.98        46
weighted avg       0.98      0.98      0.98        46

6. Scikit-learn을 사용한 확장 아이디어

  1. 다른 알고리즘 사용:
    • 로지스틱 회귀, 랜덤 포레스트, 서포트 벡터 머신(SVM) 등을 활용해 비교 실험을 진행.
  2. 하이퍼파라미터 튜닝:
    • GridSearchCV를 사용해 모델 성능 최적화.
  3. 실제 데이터 활용:
    • Kaggle에서 데이터셋을 다운로드해 머신러닝 모델을 만들어보기.