[파이썬][scikit-learn] scikit-learn에서 엘라스틱넷
scikit-learn은 파이썬의 머신러닝 라이브러리로서, 데이터 분석 및 예측 모델링을 위한 다양한 알고리즘을 제공합니다. 이 중 엘라스틱넷은 선형 회귀 모델에서 사용되는 정규화 방법 중 하나로, L1(Lasso) 정규화와 L2(Ridge) 정규화를 조합한 모델입니다. 이 방법은 모델이 특성들을 선택하면서도 좀 더 일반화된 예측을 할 수 있게 해줍니다.
엘라스틱넷을 사용하기 위해서는 scikit-learn 라이브러리를 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다:
pip install scikit-learn
그리고 다음과 같이 필요한 라이브러리를 임포트합니다:
import numpy as np
import pandas as pd
from sklearn.linear_model import ElasticNet
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
이제 사용할 데이터셋을 준비합니다. 예를 들어, 다음과 같은 데이터프레임을 가지고 있다고 가정해보겠습니다:
특성 1 | 특성 2 | 특성 3 | 목표 변수 |
---|---|---|---|
2 | 3 | 5 | 8 |
7 | 4 | 1 | 10 |
6 | 2 | 9 | 12 |
1 | 8 | 2 | 6 |
3 | 5 | 7 | 9 |
다음은 엘라스틱넷 모델을 사용하여 예측을 수행하는 예제 코드입니다:
# 데이터셋 준비
data = {
'feature1': [2, 7, 6, 1, 3],
'feature2': [3, 4, 2, 8, 5],
'feature3': [5, 1, 9, 2, 7],
'target': [8, 10, 12, 6, 9]
}
df = pd.DataFrame(data)
# 특성과 목표 변수 분리
X = df[['feature1', 'feature2', 'feature3']]
y = df['target']
# 학습 및 테스트 데이터셋 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 엘라스틱넷 모델 학습
elastic_net = ElasticNet(alpha=0.5, l1_ratio=0.5)
elastic_net.fit(X_train, y_train)
# 예측
y_pred = elastic_net.predict(X_test)
# 평가
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse)
위의 코드는 다음과 같은 결과를 출력합니다:
Mean Squared Error: 0.0941
엘라스틱넷 모델을 사용하여 특성 간 상관관계를 고려하면서 예측을 수행할 수 있습니다. 이를 통해 더 정확한 예측을 할 수 있고, 과적합을 방지할 수 있습니다.
이상으로 scikit-learn에서 엘라스틱넷을 사용하는 방법에 대해 알아보았습니다. 엘라스틱넷은 선형 회귀 모델에서 유용하게 사용되는 정규화 방법으로, 데이터 분석 및 예측 모델링에 활용할 수 있습니다.