[Python 파이썬] TensorFlow 텐서플로우 분류의 문제 모델링하는 코드

[Python 파이썬] TensorFlow 텐서플로우 분류의 문제 모델링하는 코드

비어있는 모델을 만든다.

import tensorflow as tf model = Sequential()​

덴스를 불러와 레이어를 생성한다

Dense : 세로로있는 레이어

from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense

# 첫번째 히든레이어 생성 : 인풋 레이어의 숫자도 셋팅해준다. units : 노드 개수 11개의 컬럼을 가지고 있어서 input_dim 을 컬럼의 개수에 맞춘다. model.add( Dense( units=6, activation='relu', input_dim = 11) )

# 두번째 히든레이어 생성 model.add( Dense( units = 8, activation = 'relu') )

# 아웃풋 레이어 생성 model.add( Dense(units = 1, activation='sigmoid' ) )

액티베이션에 sigmoid 함수를 쓴 이유 : 0과 1로 결과값이 나와서

# 컴파일(compile) 한다!!

# 오차함수를 설정하고, 옵티마이저(그레디언드 디센트 알고리즘)를 설정한다.

# 옵티마이저는 그래디언트 디센트 알고리즘을 개선한 것들 중에 선택하면 된다. # 그래디언트 디센트는 오차가 최소가 될때의 W값을 찾는 알고리즘이다.

# loss는 오차함수를 말한다. # 분류의 문제를 두가지로 나눈다. # 1. 두 개로 분류하는 문제 : binary, crossentropy # 2. 세 개 이상으로 분류하는 문제 : categorical_crossentropy # 위의 2개 중에 하나를 설정해준다.

# metrics 분류의 문제는 보통 정확도를 측정한다. 따라서 accurancy 를 설정해준다. (정확도를 보겠단 뜻) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 만든 모델을 요약한다. model.summary()

# 학습할때 파라미터를 2개만 셋팅했을 때의 결과

# 컴파일이 끝나면 학습한다. # model.fit(X_train, y_train) # 250/250 [==============================] - 1s 2ms/step - loss: 0.5422 - accuracy: 0.7688 #

# 컴파일이 끝나면 학습한다. model.fit(X_train, y_train, epochs=20, batch_size=10)

# 학습이 끝나면 평가한다.

y_pred = model.predict(X_test)

# 0 ~ 1 사이의 실수로 나온다. # 이유는? # 아웃풋 레이어의 액티베이션 펑션으로 시그모이드를 사용했기 때문에 y_pred

# y_pred 값이, 실수로 나왔기때문에 컨퓨전 매트릭스에 넣을 수가 없다. # 따라서 0.5를 기준으로 크면 1로, 작으면 0으로 맞춰줘야 한다. y_pred = (y_pred > 0.5).astype(int)

# astype : 타입 바꾸는 넘파이 함수

# y_pred 는 2차원이므로, 컨퓨전 매트릭스에 넣을 수 없다. # 1차원으로 만들어준다. y_pred.shape

y_pred = y_pred.reshape(2000,) y_test from sklearn.metrics import confusion_matrix, accuracy_score confusion_matrix(y_test, y_pred) accuracy_score(y_test, y_pred)

# 텐서플로우의 평가 함수 제공

model.evaluate(X_test, y_test)

from http://coding-gosu.tistory.com/39 by ccl(A) rewrite - 2021-11-30 18:02:17