본문 바로가기
카테고리 없음

파이썬 머신러닝 기초 - Scikit-Learn으로 시작하는 머신러닝

by 혜택보관소 2024. 11. 16.

머신러닝(Machine Learning)은 데이터에서 패턴을 학습하여 예측 모델을 만드는 기술로, 다양한 산업에서 활용되고 있습니다.

파이썬의 Scikit-Learn 라이브러리는 머신러닝 알고리즘과 데이터 전처리를 위한 다양한 도구를 제공합니다.

이번 글에서는 Scikit-Learn을 사용해 머신러닝 기초 개념과 예제를 통해 머신러닝 모델을 만들어보겠습니다.

파이썬 머신러닝

1. Scikit-Learn 소개 및 설치

Scikit-Learn은 파이썬의 대표적인 머신러닝 라이브러리로, 회귀, 분류, 군집화 등 다양한 알고리즘을 제공합니다. pip install scikit-learn 명령어로 설치할 수 있습니다.

2. 머신러닝의 기본 개념

머신러닝 모델을 구축하기 위해서는 주로 다음 단계를 거칩니다.

  1. 데이터 전처리: 데이터를 학습에 적합한 형식으로 변환
  2. 훈련 및 테스트 데이터 분리: 모델의 성능을 평가하기 위해 데이터를 훈련용과 테스트용으로 나누기
  3. 모델 학습: 알고리즘을 사용해 모델을 훈련 데이터에 맞게 학습
  4. 모델 평가: 테스트 데이터를 사용해 모델의 성능을 평가
  5. 예측: 모델을 사용해 새로운 데이터에 대해 예측

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을 사용하여 머신러닝 모델을 구축하는 기본 과정을 살펴보았습니다.

데이터 전처리, 모델 학습, 평가, 예측의 단계로 진행되는 머신러닝의 기초 개념을 이해하는 데 도움이 되기를 바랍니다.

머신러닝 모델을 다양한 데이터셋에 적용하여 실습하며 학습을 심화해보세요!