머신러닝(Machine Learning)은 데이터에서 패턴을 학습하여 예측 모델을 만드는 기술로, 다양한 산업에서 활용되고 있습니다.
파이썬의 Scikit-Learn 라이브러리는 머신러닝 알고리즘과 데이터 전처리를 위한 다양한 도구를 제공합니다.
이번 글에서는 Scikit-Learn을 사용해 머신러닝 기초 개념과 예제를 통해 머신러닝 모델을 만들어보겠습니다.
1. Scikit-Learn 소개 및 설치
Scikit-Learn
은 파이썬의 대표적인 머신러닝 라이브러리로, 회귀, 분류, 군집화 등 다양한 알고리즘을 제공합니다. pip install scikit-learn
명령어로 설치할 수 있습니다.
2. 머신러닝의 기본 개념
머신러닝 모델을 구축하기 위해서는 주로 다음 단계를 거칩니다.
- 데이터 전처리: 데이터를 학습에 적합한 형식으로 변환
- 훈련 및 테스트 데이터 분리: 모델의 성능을 평가하기 위해 데이터를 훈련용과 테스트용으로 나누기
- 모델 학습: 알고리즘을 사용해 모델을 훈련 데이터에 맞게 학습
- 모델 평가: 테스트 데이터를 사용해 모델의 성능을 평가
- 예측: 모델을 사용해 새로운 데이터에 대해 예측
3. Scikit-Learn으로 머신러닝 모델 구축하기
이제 Scikit-Learn을 사용하여 간단한 선형 회귀 모델을 만들어보겠습니다. 예제로는 보스턴 주택 가격 데이터셋을 사용하여, 주택 가격을 예측하는 모델을 만들겠습니다.
3.1 데이터 로드
Scikit-Learn에서 제공하는 보스턴 주택 가격 데이터셋을 불러옵니다.
예제: 데이터 로드하기
from sklearn.datasets import load_boston
import pandas as pd
# 데이터 로드
boston = load_boston()
data = pd.DataFrame(boston.data, columns=boston.feature_names)
data["PRICE"] = boston.target
print(data.head())
4. 데이터 전처리 및 분할
머신러닝에서는 데이터를 훈련용과 테스트용으로 나누는 것이 중요합니다. 이를 통해 모델의 성능을 일반화할 수 있습니다.
4.1 훈련 데이터와 테스트 데이터 분할
Scikit-Learn의 train_test_split
함수를 사용하여 데이터를 분할합니다.
예제: 훈련 데이터와 테스트 데이터 분할
from sklearn.model_selection import train_test_split
# 특성과 타겟 변수 정의
X = data.drop("PRICE", axis=1) # 특성 (입력)
y = data["PRICE"] # 타겟 (출력)
# 80%는 훈련용, 20%는 테스트용으로 분할
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)
5. 모델 학습
Scikit-Learn의 LinearRegression
클래스를 사용하여 선형 회귀 모델을 학습시킵니다.
예제: 선형 회귀 모델 학습
from sklearn.linear_model import LinearRegression
# 모델 생성
model = LinearRegression()
# 모델 학습
model.fit(X_train, y_train)
# 회귀 계수와 절편
print("회귀 계수:", model.coef_)
print("절편:", model.intercept_)
6. 모델 평가
학습한 모델을 테스트 데이터에 적용하여 예측하고, 성능을 평가합니다. 회귀 모델에서는 평균 제곱 오차(MSE)나 결정 계수(𝑅²)를 사용해 평가할 수 있습니다.
예제: 모델 성능 평가
from sklearn.metrics import mean_squared_error, r2_score
# 예측
y_pred = model.predict(X_test)
# 성능 평가
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print("평균 제곱 오차 (MSE):", mse)
print("결정 계수 (R²):", r2)
위 코드에서는 테스트 데이터에 대한 예측 결과를 바탕으로 평균 제곱 오차와 결정 계수를 계산하여 모델의 성능을 평가합니다.
7. 예측하기
학습된 모델을 사용하여 새로운 데이터에 대해 예측할 수 있습니다.
예제: 새로운 데이터로 예측하기
# 새로운 데이터 (특성 값들을 직접 입력)
new_data = [[0.1, 18.0, 2.31, 0, 0.538, 6.575, 65.2, 4.0900, 1, 296, 15.3, 396.90, 4.98]]
# 예측
predicted_price = model.predict(new_data)
print("예측된 주택 가격:", predicted_price[0])
위 코드에서는 새로운 특성 값을 입력하여 주택 가격을 예측합니다. 이렇게 학습된 모델을 사용해 다양한 예측을 수행할 수 있습니다.
마무리
이번 글에서는 Scikit-Learn을 사용하여 머신러닝 모델을 구축하는 기본 과정을 살펴보았습니다.
데이터 전처리, 모델 학습, 평가, 예측의 단계로 진행되는 머신러닝의 기초 개념을 이해하는 데 도움이 되기를 바랍니다.
머신러닝 모델을 다양한 데이터셋에 적용하여 실습하며 학습을 심화해보세요!