내가 보려고 만든 사이킷런 정리

1. Scikit-learn 개요

Scikit-learn은 파이썬에서 가장 널리 사용되는 머신러닝 라이브러리이다.
데이터 전처리, 모델 학습, 예측, 모델 평가까지 머신러닝의 전체 과정을 쉽게 구현할 수 있도록 다양한 알고리즘과 도구를 제공한다.

Scikit-learn은 다음 라이브러리와 함께 사용되는 경우가 많다.

라이브러리 역할
NumPy 수치 연산
Pandas 데이터 처리
Matplotlib 데이터 시각화
Scikit-learn 머신러닝 모델

2. Scikit-learn 기본 구조

Scikit-learn의 기본적인 머신러닝 과정은 다음과 같다.


데이터 준비  
↓  
데이터 분리  
↓  
모델 생성  
↓  
모델 학습  
↓  
예측  
↓  
모델 평가

3. 데이터 준비

Scikit-learn에서는 다양한 예제 데이터셋을 제공한다.
대표적으로 Iris 데이터셋이 자주 사용된다.

from sklearn.datasets import load_iris

iris = load_iris()

print(iris.keys())

# 결과
# dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names'])

데이터 구성

항목설명

data 입력 데이터
target 정답(label)
feature_names 특성 이름
target_names 클래스 이름

데이터 확인

X = iris.data
y = iris.target

print(X.shape)
print(y.shape)

# 결과
# (150, 4)
# (150,)

설명

값의미

150 데이터 개수
4 특성 개수

ai가 추천하는 심화 예제

Iris 데이터를 Pandas DataFrame으로 변환

import pandas as pd

df = pd.DataFrame(X, columns=iris.feature_names)

print(df.head())

# 결과
#    sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)
# 0               5.1               3.5               1.4               0.2
# 1               4.9               3.0               1.4               0.2
# ...

4. 데이터 분리

머신러닝에서는 데이터를 학습 데이터와 테스트 데이터로 분리해야 한다.

데이터역할

Train Data 모델 학습
Test Data 모델 성능 평가
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
)

print(X_train.shape)
print(X_test.shape)

# 결과
# (120, 4)
# (30, 4)

옵션 설명

옵션의미

test_size 테스트 데이터 비율
random_state 랜덤 시드

ai가 추천하는 심화 예제

데이터 분포 확인

print(len(X_train))
print(len(X_test))

# 결과
# 120
# 30

5. 머신러닝 모델

Scikit-learn에서는 다양한 머신러닝 모델을 제공한다.

대표 알고리즘

알고리즘유형

KNN 분류
Decision Tree 분류 / 회귀
Random Forest 분류 / 회귀
SVM 분류
Linear Regression 회귀

6. KNN 알고리즘

KNN(K-Nearest Neighbors)은 가장 가까운 이웃 데이터를 기준으로 분류하는 알고리즘이다.

from sklearn.neighbors import KNeighborsClassifier

model = KNeighborsClassifier(n_neighbors=3)

print(model)

# 결과
# KNeighborsClassifier(n_neighbors=3)

설명

파라미터의미

n_neighbors 참고할 이웃 데이터 수

ai가 추천하는 심화 예제

다른 K값 설정

model = KNeighborsClassifier(n_neighbors=5)

print(model)

# 결과
# KNeighborsClassifier(n_neighbors=5)

7. 모델 학습

모델 학습은 fit() 함수를 사용한다.

model.fit(X_train, y_train)

# 결과
# 모델 학습 완료

ai가 추천하는 심화 예제

다른 알고리즘 학습

from sklearn.tree import DecisionTreeClassifier

model = DecisionTreeClassifier()

model.fit(X_train, y_train)

# 결과
# 모델 학습 완료

8. 예측

학습된 모델을 이용하여 데이터를 예측할 수 있다.

pred = model.predict(X_test)

print(pred)

# 결과
# 예측된 클래스 배열

ai가 추천하는 심화 예제

새로운 데이터 예측

sample = [[5.0, 3.4, 1.5, 0.2]]

result = model.predict(sample)

print(result)

# 결과
# [0]

9. 모델 평가

모델 성능을 평가하기 위해 다양한 평가 지표를 사용할 수 있다.

정확도 (Accuracy)

from sklearn.metrics import accuracy_score

accuracy = accuracy_score(y_test, pred)

print(accuracy)

# 결과
# 0.96

정확도 계산식

Accuracy = (정답 예측 수) / (전체 데이터 수)

ai가 추천하는 심화 예제

혼동 행렬 (Confusion Matrix)

from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, pred)

print(cm)

# 결과
# [[10 0 0]
#  [0 9 1]
#  [0 0 10]]

혼동 행렬은 모델이 어떤 클래스에서 오류가 발생하는지 확인할 수 있는 방법이다.


10. 전체 머신러닝 파이프라인

Scikit-learn을 이용한 전체 머신러닝 과정

데이터 수집
↓
데이터 전처리
↓
데이터 분리
↓
모델 생성
↓
모델 학습
↓
예측
↓
모델 평가

11. 정리

Scikit-learn은 파이썬에서 머신러닝을 구현할 때 가장 많이 사용되는 라이브러리이다.

핵심 기능

  • 데이터 분리
  • 머신러닝 모델 제공
  • 모델 학습
  • 예측
  • 모델 평가

대표 알고리즘

  • KNN
  • Decision Tree
  • Random Forest
  • SVM
  • Linear Regression

Scikit-learn은 머신러닝의 기본 알고리즘을 구현하고 실험하기에 매우 적합한 라이브러리이다.