인곡지λŠ₯πŸ€–

유데미 κ°•μ˜ ANN(인곡신경망) λͺ¨λΈ 평가 μ „κΉŒμ§€ μˆ˜κ°•

https://www.udemy.com/course/best-artificial-neural-networks/?couponCode=KEEPLEARNING

인곡신경망 예제 μž‘μ„±

인곡신경망을 ν™œμš©ν•˜μ—¬ 은행 κ³ κ°λ“€μ˜ λ°μ΄ν„°λ‘œ 은행 νƒˆν‡΄ ν™•λ₯  예츑 AIλ₯Ό λ§Œλ“€μ–΄λ³Έλ‹€.

import numpy as np
import tensorflow as tf
import pandas as pd

λ¨Όμ € μ½”λ“œμ— ν•„μš”ν•œ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ„ μž„ν¬νŠΈν•΄μ€€λ‹€.

1. 데이터 μ „μ²˜λ¦¬

μ‚¬μš©ν•˜λ €λŠ” λ°μ΄ν„°λŠ” μ²˜μŒμƒνƒœλ‘œλŠ” μ‚¬μš©λ  수 μ—†λ‹€. λ…λ¦½λ³€μˆ˜μ˜ 값이 μˆ«μžκ°€ μ•„λ‹ˆκ±°λ‚˜, λΉ„μ–΄μžˆκ±°λ‚˜, λ„ˆλ¬΄ 크면 μ²˜λ¦¬ν•˜λŠ” 데에 λ¬Έμ œκ°€ 생길 μˆ˜λ„ 있기 λ•Œλ¬Έμ— 이전에 μ „μ²˜λ¦¬λ₯Ό ν•΄μ£Όμ–΄μ•Όν•œλ‹€.

dataset = pd.read_csv('Churn_Modelling.csv')
X = dataset.iloc[:, 3:-1].values
y = dataset.iloc[:, -1].values

μš°μ„  μ‚¬μš©ν•˜λ €λŠ” 데이터셋을 μž„ν¬νŠΈν•œ 후에(고객의 이름, 고객번호, 아이디 등은 λ…λ¦½λ³€μˆ˜λ‘œμ¨ μ‚¬μš©λ  수 없기에 μŠ¬λΌμ΄μ‹±ν•΄μ€€λ‹€.)

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
X[:, 2] = le.fit_transform(X[:, 2])

성별은 male female λ‘˜ 쀑 ν•˜λ‚˜μ΄κΈ° λ•Œλ¬Έμ— 0κ³Ό 1둜 인코딩해쀀닀(μˆœμ„œλŠ” 상관없닀.)

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])], remainder='passthrough')
X = np.array(ct.fit_transform(X))

λ‹€μŒμœΌλ‘œ 지역을 μΈμ½”λ”©ν•œλ‹€. μΈκ³΅μ‹ κ²½λ§μ˜ ν•™μŠ΅μ—μ„œ κΈ€μžλŠ” μ‚¬μš©μ΄ λΆˆκ°€ν•˜κΈ° λ•Œλ¬Έμ— 숫자둜 λ°”κΎΈμ–΄μ£ΌλŠ”λ°, ν˜„μž¬ 고객의 지역이 ν”„λž‘μŠ€, 슀페인, λ…μΌμ΄λ―€λ‘œ 3개의 λ”λ―Έλ³€μˆ˜λ₯Ό μƒμ„±ν•˜μ—¬ 각각 1 0 0, 0 1 0, 0 0 1같은 μ‹μœΌλ‘œ μΈμ½”λ”©ν•˜μ—¬ λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

λͺ¨λΈμ„ ν›ˆλ ¨ν•˜κ³  ν…ŒμŠ€νŠΈν•  λ•Œμ— 데이터셋은 각각 λ‹¬λΌμ•Όν•œλ‹€. λ”°λΌμ„œ μž„ν¬νŠΈν•œ 데이터셋을 ν›ˆλ ¨ μ„ΈνŠΈμ™€ ν…ŒμŠ€νŠΈ μ„ΈνŠΈλ‘œ λΆ„λ¦¬ν•œλ‹€.

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)