AI/실습

123. [Python] [Machine Learning] : 지도 학습 (Supervised Learning)

천재단미 2025. 1. 25. 18:40
728x90
반응형

반응형

 

 

 

 

 

 

 

1. 지도 학습(Supervised Learning)이란?

지도 학습은 머신 러닝의 한 종류로, **입력 데이터(Input)**와 이에 상응하는 **정답 데이터(Output)**를 사용하여 학습하는 알고리즘입니다. 모델은 주어진 데이터를 학습한 후, 새로운 데이터에 대한 예측을 수행합니다.

  • 입력 데이터(X): 모델이 학습할 특징(Features) 데이터
  • 정답 데이터(y): 각 입력 데이터에 대한 실제 정답(Label)

# Data Preprocessing Template

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

 


 

 

 

2. 지도 학습의 주요 유형

2-1. 회귀(Regression)

목표: 연속적인 값을 예측

  • 예시:
    • 주택 가격 예측
    • 주식 시장 예측
  • 대표 알고리즘:
    • 선형 회귀(Linear Regression)
    • 결정 트리 회귀(Decision Tree Regressor)
    • 랜덤 포레스트 회귀(Random Forest Regressor)
    • 서포트 벡터 회귀(SVR)

 

2-2. 분류(Classification)

  • 목표: 데이터가 특정 카테고리에 속하는지 분류
  • 예시:
    • 이메일 스팸 여부 분류(스팸/정상)
    • 이미지 속 객체 분류(고양이/강아지/새 등)
  • 대표 알고리즘:
    • 로지스틱 회귀(Logistic Regression)
    • 결정 트리(Classification Tree)
    • 랜덤 포레스트(Random Forest Classifier)
    • 서포트 벡터 머신(SVM)
    • K-최근접 이웃(KNN)

 

 


 

 

3. 지도 학습의 주요 단계

3-1.데이터 준비

  • 데이터를 불러오고 전처리 수행
  • 결측값 처리, 이상치 제거, 범주형 변수 인코딩, 데이터 정규화/표준화
df=pd.read_csv('../data/Data.csv')
df['Country'].unique()

 

출력

array(['France', 'Spain', 'Germany'], dtype=object)

 

 

 

3-2.NaN 유무확인 

 

 

 

3-3.NaN 처리 

  • 삭제
  • 다른값으로 채우기
df = df.dropna()
df.dropna(inplace = True) 위와 같은 방법

df.fillna(df.mean(numeric_only = True))

 

삭제하는 방법을 선택

 

 

 

  TIP💡

Feature Scaling

  1. 정규화 (Normalization):
    • 데이터를 0과 1 사이의 범위로 변환합니다.
    • 공식: (x - min(x)) / (max(x) - min(x))
    • 주로 이미지 처리나 신경망에서 사용됩니다.
  2. 표준화 (Standardization):
    • 데이터를 평균 0, 표준편차 1로 변환합니다.
    • 공식: (x - μ) / σ (μ: 평균, σ: 표준편차)
    • 대부분의 머신러닝 알고리즘에서 사용됩니다.

 

 

 

 

 

 

3-4. X, Y 데이터 분리

y = df['Purchased']
X = df.loc[ :,'Country':'Salary']

 

 

 

 

3-5. 인코딩

 카테코리컬 데이터에서  종류가 3개 이상이면, 원핫 인코딩을 해야하고,
 종류가 2개이이면, 0과 1로만 바꾸면 됩니다. 

X['Country'].nunique()
# 3

y.nunique()
#2

 

3개 이상 => 원핫 인코딩진행 을 위해  정렬진행합니다. 

 

 정렬 

sorted(X['Country'].unique())

#['France', 'Germany', 'Spain']

 

from sklearn.preprocessing import LabelEncoder,OneHotEncoder
from sklearn.compose import ColumnTransformer

# 원화 인코딩
# 컬럼 트랜스포머를 만들때는, 튜플의 세번째에, 원하는 컬럼 인텍스를 넣는다. 
ct = ColumnTransformer(  [ ( 'encoder',OneHotEncoder(), [ 0 ] )],remainder = 'passthrough')
# 형태변환
X = ct.fit_transform(X)
X

출력

 

 

# 레이블 인코딩한다. 
encoder = LabelEncoder()

# 형태변환
y = encoder.fit_transform(y)

y

출력

 

 

 

 

 

 

3-6.  데이터분할

  • 학습 데이터(Training Data): 모델 학습에 사용
  • 검증 데이터(Validation Data): 모델 성능 평가 및 하이퍼파라미터 조정에 사용
  • 테스트 데이터(Test Data): 최종 모델 성능 평가
  • 일반적으로 train_test_split 함수로 데이터를 분할

from sklearn.model_selection import train_test_split

# random_state = 결과값 같게 세팅 
train_test_split(X, y, test_size = 0.2, random_state = 24)

 

sccaler_X = StandardScaler()
X = sccaler_X.fit_transform( X )
X

 

 

 

728x90
반응형
home top bottom
}