import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 학습용 유방암 데이터 로드
from sklearn.datasets import load_breast_cancer
data = load_breast_cancer()
data.keys()
dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module'])
X = data['data']
y = data['target']
X.shape, y.shape
((569, 30), (569,))
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=5)
print(X_train.shape)
print(y_train.shape)
print(X_test.shape)
print(y_test.shape)
(455, 30)
(455,)
(114, 30)
(114,)
# 신경망 구조 설계
model1 = Sequential()
# input_dim : 입력되는 데이터의 특성 개수를 설정
# activation : 활성화 함수를 설정(들어온 자극(데이터)에 대한 응답여부(예측결과)를 결정하는 함수)
# 입력층(input_dim) + 중간 1개층(Dense)
model1.add(Dense(100, input_dim=30, activation='relu'))
# 중간층
model1.add(Dense(50, activation='relu'))
model1.add(Dense(20, activation='relu'))
model1.add(Dense(10, activation='relu'))
# 출력층
model1.add(Dense(1, activation='sigmoid'))
model1.summary()
Model: "sequential_7"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_32 (Dense) (None, 100) 3100
dense_33 (Dense) (None, 50) 5050
dense_34 (Dense) (None, 20) 1020
dense_35 (Dense) (None, 10) 210
dense_36 (Dense) (None, 1) 11
=================================================================
Total params: 9,391
Trainable params: 9,391
Non-trainable params: 0
_________________________________________________________________
# 학습 및 평가방법 설정
# binary_crossentropy : 2진분류에 사용하는 손실함수
# -> 오차의 평균을 구하는 것은 mse와 같지만 0~1사이의 값으로 반환한 후에 평균오차를 구함(그래야 0또는1로 분류하기 편하니까!)
model.compile(loss='binary_crossentropy',
optimizer='Adam', # 최적화함수 : 최근에 가장 많이 사용되는 일반적으로 성능이 좋은 최적화함수
metrics=['acc'] # metrics : 평가방법을 설정(분류문제이기 때문에 정확도를 넣어줌)
)
# 학습
h = model.fit(X_train, y_train, epochs=100)
plt.figure(figsize=(15,5))
plt.plot(h.history['acc'], label='acc')
plt.legend()
plt.show

model.evaluate(X_test, y_test)
4/4 [==============================] - 0s 4ms/step - loss: 0.5825 - acc: 0.5965
[0.5825210809707642, 0.5964912176132202]
'딥러닝' 카테고리의 다른 글
[딥러닝] 손글씨 이미지 데이터 분류 (0) | 2022.07.18 |
---|---|
[딥러닝] Iris 품종 분류 (0) | 2022.07.18 |
[딥러닝] 활성화 함수(Activation Function) (0) | 2022.07.14 |
[딥러닝] 퍼셉트론, 다층 퍼셉트론(Perceptron, MLP) (0) | 2022.07.14 |
[딥러닝] keras 맛보기 (0) | 2022.07.12 |