머신러닝을 활용하여 "구매할 것인가, 안 할 것인가"를 예측하는 모델을 만드는 방법을 단계별로 설명해 보겠습니다.
1. 필요한 라이브러리 설치 및 불러오기
먼저 머신러닝 작업을 위해 필요한 라이브러리인 sklearn을 설치합니다. 이를 통해 다양한 머신러닝 알고리즘을 사용할 수 있습니다.
pip install scikit-learn
다음으로 Python에서 필요한 라이브러리를 임포트합니다.
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix
2. 데이터 불러오기 및 NaN 처리
데이터를 불러오고 결측값(NaN)을 처리하는 것은 중요한 전처리 과정입니다.
예를 들어, 결측값을 평균값으로 대체하거나, 제외할 수 있습니다.
data = pd.read_csv("data.csv")
df.fillna(df['Salary'].mean(numeric_only=True)) #DataFrame의 평균을 계산할 때 숫자형 데이터만 고려하라는 옵션
df.dropna() # NaN 제외
3. 데이터 분리: 특징(X)와 레이블(Y)
머신러닝 모델을 학습시키기 위해서는 입력값과 출력값을 분리해야 합니다.
대답할 부분 y(구매예측), 알려줄 부분 X (국가, 나이, 연봉)
y=df['Purchased']
X=df.loc[ : ,'Country':'Salary']
#1차원은 소문자. 행렬은 대문자
4. 범주형 데이터를 숫자로 변환: 원핫 인코딩과 레이블 인코딩
컴퓨터는 데이터를 숫자로 처리합니다.
숫자가 아닌 데이터 중에서, 카테고리로 판단되는 데이터는 숫자로 바꿔줘야 합니다.
카테고리컬데이터에서 종류가 3개 이상이면, 원핫 인코딩을 하고
2개 이상이면 0,1로만 바꾸면 된다.
레이블 인코딩
encoder2=LabelEncoder()
y=encoder2.fit_transform(y)
#y는 yes, no 두개. 0,1 no = 0 , yes = 1 lavelEncoding
원핫 인코딩
ct=ColumnTransformer( [('encoder',OneHotEncoder(),[0])], remainder='passthrough')
# ColumnTransformer 변수 설정 할때는 튜플의 세번째에 원하는 컬럼 인덱스 'Country' =[0]를 넣는다.
# 나머지는 건들지말고 remainder='passthrough'
X=ct.fit_transform(X)
5. Feature Scaling (특징 스케일링)
연령과 연봉은 같은 스케일이 아니다!
데이터의 각 특징들이 서로 다른 스케일을 가질 때, 이를 동일한 스케일로 맞추는 과정이 필요합니다. 이를 통해 모델의 학습 속도와 성능을 개선할 수 있습니다.
- 표준화 (Standardization): 평균 0, 표준편차 1로 변환
- 정규화 (Normalization): 데이터 값을 0과 1 사이로 변환
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X = sc_X.fit_transform(X)
# y는 이미 0,1로 범위 맞춰졌다. 피처스케일링 할 필요 없다.
6. 데이터 나누기: 훈련 데이터와 테스트 데이터
모델을 학습시키기 전에, 데이터를 훈련용과 테스트용으로 나누어야 합니다. 보통 80%를 훈련용 데이터로, 20%를 테스트용 데이터로 사용합니다.
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=42)
7. 모델 학습: 로지스틱 회귀 모델
구매 예측을 위한 분류 모델을 생성할 때 로지스틱 회귀(Logistic Regression)를 사용합니다.
classifier = LogisticRegression()
classifier.fit(X_train, Y_train) # 훈련 데이터로 모델 학습
8. 모델 평가: 혼동 행렬
모델을 평가하는 방법 중 하나는 혼동 행렬(confusion matrix)을 사용하는 것입니다. 이를 통해 모델이 얼마나 잘 예측했는지 확인할 수 있습니다.
Y_pred = classifier.predict(X_test)
cm = confusion_matrix(Y_test, Y_pred)
9. 결론
이러한 단계들을 통해, 구매 예측 모델을 만들어볼 수 있습니다.
머신러닝 모델을 만들 때는 데이터 전처리와 모델 평가가 매우 중요하므로 각 단계를 신중하게 진행해야 합니다.
이 예제를 바탕으로 다양한 응용 분야에 머신러닝 모델을 적용해 보세요!