왕현성
코딩발자취
왕현성
전체 방문자
오늘
어제
  • 코딩 (277)
    • Python (71)
    • Java (16)
    • MySQL (34)
    • 인공지능 (48)
      • 머신러닝 (16)
      • 딥러닝 (32)
    • 영상처리 (4)
    • Rest API (21)
    • Android Studio (25)
    • streamlit (13)
    • DevOps (22)
      • AWS (9)
      • PuTTY (5)
      • Git (4)
      • Serverless (2)
      • Docker (2)
    • IT 기술 용어 (6)
    • 디버깅 ( 오류 해결 과정 ) (17)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • labelme UnocodeDecodeError
  • labelme
  • 기상탐사
  • unsupervised
  • maskimage
  • alibidetect
  • alibi-detection
  • pytorch
  • pip install labelme
  • OpenCV
  • 영상기술
  • PIL
  • ckpt_file
  • 의료이미징
  • 비지도학습
  • TensorFlow
  • PYTHON
  • UnboundLocalError
  • encoding='utf-8'
  • 딥러닝
  • yolov8
  • numpy
  • imageprocessing
  • get_long_description
  • tune()
  • 영상처리역사
  • 영상처리
  • 컴퓨터비전
  • matplotlib
  • ComputerVision

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
왕현성

코딩발자취

딥러닝 : tensorflow로 분류의 문제 모델링 하는 방법
인공지능/딥러닝

딥러닝 : tensorflow로 분류의 문제 모델링 하는 방법

2022. 12. 27. 16:14
728x90

우선 사용할 라이브러리들 import후 데이터 프레임을 불러옵니다.

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import os
%matplotlib inline
df = pd.read_csv('Churn_Modelling.csv')

 

1. 결측치 확인

df.isna().sum()

위 데이터 프레임에는 결측치가 없었기 때문에 nan 처리를 안 하였습니다.

 

2. X와 y로 분리

X=df.iloc[:,3:-1]
y=df['Exited']

3. 문자열 데이터 처리 ( LabelEncoder , OneHotEncoder)

X['Geography'].nunique()
X['Gender'].nunique()

어떤 2개 이하이면 레이블 인코딩을 , 아니라면 원핫 인코딩을 하기 위해 유니크한 값을 확인하고

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

필요한 라이브러리 임포트 후

 

레이블 인코딩부터 진행

label_encoder = LabelEncoder()
X['Gender']=label_encoder.fit_transform(X['Gender'])

원 핫 인코딩 진행

ct=ColumnTransformer([('encoder', OneHotEncoder(),[1])],remainder='passthrough')
X=ct.fit_transform(X.values)
 

 

 
4. dummy variable trap
 
 
X_df=pd.DataFrame(X)
X_df.drop(0,axis=1,inplace=True) # france 컬럼을 삭제해도 3개의 데이터를 모두 나타낼 수 있음.
X = X_df.values

5. 피쳐 스케일링

머신러닝과 다른 점은 딥러닝은 무조건 피쳐스케일링 해야한다. 매우 중요하다.

from sklearn.preprocessing import MinMaxScaler
scaler_X = MinMaxScaler()
X=scaler_X.fit_transform(X)

 

6. 학습용과 테스트용으로 데이터 나누기 ( train_test_split )

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)

 

7. 모델링 과정

import tensorflow as tf
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(  Dense(units = 6, activation='relu',input_shape=(11,) )  )

2개로 분류 => sigmoid 

model.add(Dense(units=1,activation='sigmoid'))

 

8. 컴파일(Compile) 과정

 

컴파일이란, 옵티마이저(optimizer)와 로스펑션 (loss function 오차함수,손실함수)

2개로 분류하는 문제의 loss는 'binary_crossentropy'

 

model.compile(optimizer='adam',loss='binary_crossentropy',metrics=[ 'accuracy'])

 

9. 학습 과정

주의점 : 학습 코드를 실행한 후에, 다시 학습하고 싶을 때는, 모델링 부분부터 다시 실행해야한다.

 

model.fit(X_train,y_train,batch_size=10,epochs=20)

10. 평가 과정

model.evaluate(X_test,y_test)

컨퓨전 매트릭스를 확인하여, 어떤 문제를 잘 맞추고 못 맞추는지 확인

 

from sklearn.metrics import confusion_matrix,accuracy_score
y_pred=model.predict(X_test)
y_pred=(y_pred > 0.5).astype(int)
cm=confusion_matrix(y_test,y_pred)

 

'인공지능 > 딥러닝' 카테고리의 다른 글

딥러닝 : Tensorflow로 리그레션 문제 모델링 하는 방법  (0) 2022.12.28
딥러닝 : GridSearch를 이용한 최적의 하이퍼 파라미터 찾기  (0) 2022.12.27
딥러닝 : Dummy variable trap  (0) 2022.12.27
딥러닝 : fit 함수에서 배치 사이즈 (batch_size= )와 에포크(epochs=)  (0) 2022.12.27
딥러닝 : 뉴런의 정의  (0) 2022.12.27
    '인공지능/딥러닝' 카테고리의 다른 글
    • 딥러닝 : GridSearch를 이용한 최적의 하이퍼 파라미터 찾기
    • 딥러닝 : Dummy variable trap
    • 딥러닝 : fit 함수에서 배치 사이즈 (batch_size= )와 에포크(epochs=)
    • 딥러닝 : 뉴런의 정의
    왕현성
    왕현성
    AI 머신비전 학습일지

    티스토리툴바