AI를 처음 공부하다 보면 "언제쯤 직접 AI를 만들어 볼 수 있을까?"라는 궁금증이 생긴다. 이론을 이해하는 것도 중요하지만, 직접 모델을 만들어 예측 결과를 확인하는 경험은 학습 동기를 높여 준다.
파이썬에는 머신러닝을 쉽게 시작할 수 있도록 다양한 라이브러리가 제공되는데, 그중 가장 많이 사용되는 것이 Scikit-learn(사이킷런)이다. 복잡한 수학 공식을 직접 구현하지 않아도 여러 머신러닝 알고리즘을 간단한 코드로 실행할 수 있어 입문자에게 적합하다.
필자도 처음에는 머신러닝이 매우 어려운 기술이라고 생각했지만, Scikit-learn으로 간단한 예제를 실행해 보면서 학습 과정이 생각보다 체계적으로 구성되어 있다는 점을 알게 되었다. 이번 글에서는 Scikit-learn의 특징과 첫 번째 머신러닝 모델을 만드는 기본 과정을 살펴보겠다.
Scikit-learn은 어떤 라이브러리일까?
Scikit-learn은 파이썬에서 가장 널리 사용되는 머신러닝 라이브러리 중 하나다.
다양한 알고리즘을 제공하며, 데이터 전처리부터 모델 학습, 평가까지 하나의 라이브러리 안에서 수행할 수 있다.
대표적으로 다음과 같은 기능을 제공한다.
- 분류(Classification)
- 회귀(Regression)
- 군집화(Clustering)
- 데이터 전처리
- 모델 평가
- 교차 검증
- 차원 축소
복잡한 구현 없이도 실습을 진행할 수 있어 교육용과 실무용 모두에서 많이 활용된다.
머신러닝 모델을 만드는 기본 순서
Scikit-learn을 사용한 머신러닝은 대부분 비슷한 과정을 거친다.
- 데이터 준비
- 학습용과 테스트용 데이터 분리
- 모델 선택
- 모델 학습
- 예측 수행
- 성능 평가
이 흐름을 이해하면 다양한 알고리즘을 사용할 때도 쉽게 응용할 수 있다.
예제 데이터 준비하기
Scikit-learn은 연습용 데이터셋도 함께 제공한다.
가장 유명한 데이터셋 중 하나는 아이리스(Iris) 데이터다.
아이리스 데이터는 꽃의 길이와 너비를 이용해 품종을 분류하는 예제다.
from sklearn.datasets import load_iris iris = load_iris() print(iris.data[:5]) print(iris.target[:5])
데이터와 정답(label)이 함께 제공되므로 머신러닝을 처음 배우기에 적합하다.
학습용 데이터와 테스트 데이터 나누기
모델을 제대로 평가하려면 학습에 사용한 데이터와 평가용 데이터를 구분해야 한다.
Scikit-learn에서는 다음과 같이 데이터를 쉽게 나눌 수 있다.
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( iris.data, iris.target, test_size=0.2, random_state=42 )
여기서
-
X는 입력 데이터 -
y는 정답 데이터
를 의미한다.
일반적으로 전체 데이터의 20~30% 정도를 테스트 데이터로 사용하는 경우가 많다.
첫 번째 머신러닝 모델 만들기
입문자가 가장 쉽게 접하는 알고리즘 중 하나는 의사결정나무(Decision Tree)이다.
다음과 같이 모델을 생성하고 학습할 수 있다.
from sklearn.tree import DecisionTreeClassifier model = DecisionTreeClassifier() model.fit(X_train, y_train)
fit() 함수는 모델이 데이터를 학습하는 과정이다.
이 과정에서 모델은 입력 데이터와 정답을 분석하여 규칙을 찾는다.
예측 결과 확인하기
학습이 끝나면 새로운 데이터를 이용해 예측할 수 있다.
prediction = model.predict(X_test) print(prediction)
이제 모델은 처음 보는 데이터에 대해서도 품종을 예측할 수 있다.
머신러닝의 핵심은 단순히 데이터를 외우는 것이 아니라, 새로운 데이터에서도 적절한 결과를 예측하는 것이다.
모델 성능 평가하기
예측이 끝났다면 모델이 얼마나 정확한지 확인해야 한다.
Scikit-learn에서는 정확도를 쉽게 계산할 수 있다.
from sklearn.metrics import accuracy_score score = accuracy_score(y_test, prediction) print(score)
출력되는 값은 0과 1 사이의 숫자이며, 1에 가까울수록 높은 정확도를 의미한다.
다만 정확도가 높다고 해서 항상 좋은 모델이라고 단정할 수는 없다. 데이터의 특성과 문제의 목적에 따라 다양한 평가 지표를 함께 살펴보는 것이 중요하다.
Scikit-learn이 인기 있는 이유
많은 개발자가 Scikit-learn을 사용하는 이유는 다음과 같다.
배우기 쉽다
복잡한 알고리즘도 간단한 코드로 실행할 수 있어 입문자에게 적합하다.
다양한 알고리즘 제공
회귀, 분류, 군집화 등 여러 머신러닝 기법을 하나의 라이브러리에서 사용할 수 있다.
문서가 잘 정리되어 있다
공식 문서와 예제가 풍부해 학습 자료를 쉽게 찾을 수 있다.
NumPy와 Pandas와 잘 연동된다
이전에 배운 NumPy와 Pandas 데이터를 그대로 활용할 수 있어 실습이 편리하다.
초보자가 자주 하는 실수
머신러닝을 처음 실습할 때 다음과 같은 실수를 자주 한다.
- 데이터를 충분히 분석하지 않고 바로 학습한다.
- 학습 데이터와 테스트 데이터를 구분하지 않는다.
- 정확도만 보고 모델을 평가한다.
- 데이터 전처리를 생략한다.
- 결과를 한 번만 실행하고 일반화한다.
머신러닝은 단순히 코드를 실행하는 것이 아니라 데이터를 이해하는 과정까지 포함된다는 점을 기억하는 것이 중요하다.
앞으로 배워야 할 내용
Scikit-learn을 이용한 첫 모델을 만들었다면 다음 단계에서는 더 다양한 개념을 익히게 된다.
예를 들어
- 지도학습과 비지도학습
- 데이터 전처리
- 특성 선택(Feature Selection)
- 모델 튜닝
- 교차 검증
- 다양한 평가 지표
등을 배우면 실제 프로젝트에도 적용할 수 있는 수준으로 실력을 키울 수 있다.
마무리
Scikit-learn은 AI 입문자가 머신러닝을 가장 쉽게 경험할 수 있도록 도와주는 라이브러리다. 데이터를 준비하고, 모델을 학습시키고, 결과를 평가하는 기본 흐름을 이해하면 이후 더 복잡한 알고리즘도 자연스럽게 익힐 수 있다.
처음에는 예제 코드를 따라 하는 것만으로도 충분하다. 중요한 것은 결과를 확인한 뒤 "왜 이런 예측이 나왔을까?"를 생각해 보는 습관이다. 이러한 과정이 머신러닝을 깊이 이해하는 데 큰 도움이 된다.
다음 글에서는 지도학습(Supervised Learning)과 비지도학습(Unsupervised Learning)의 차이와 활용 사례를 알아보겠다.
FAQ
Q1. Scikit-learn은 딥러닝도 지원하나요?
Scikit-learn은 주로 머신러닝 알고리즘을 제공하는 라이브러리다. 딥러닝은 일반적으로 TensorFlow나 PyTorch 같은 라이브러리를 사용한다.
Q2. 머신러닝 모델은 왜 학습 데이터와 테스트 데이터를 나누나요?
모델이 새로운 데이터에서도 잘 동작하는지 확인하기 위해서다. 학습에 사용한 데이터만 평가하면 실제 성능을 제대로 판단하기 어렵다.
Q3. Scikit-learn을 배우기 전에 NumPy와 Pandas를 알아야 하나요?
필수는 아니지만 기본적인 NumPy와 Pandas 사용법을 익혀두면 데이터를 준비하고 분석하는 과정이 훨씬 수월해진다.
0 댓글