Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 모두의 딥러닝
- 최소자승법
- 구글 BERT의 정석
- 감성분석
- 차원축소
- F분포
- 밑바닥부터 시작하는 딥러닝2
- 밑바닥부터 시작하는 딥러닝
- 가설검정
- 텍스트 분류
- Pandas
- 자연어 처리
- student t분포
- 오래간만에 글쓰네
- 군집화
- 기초통계
- 결정계수
- Django
- 기술통계학
- 머신러닝
- word2vec
- 다층 퍼셉트론
- 코사인 유사도
- 파이썬 pandas
- numpy
- rnn
- 은준아 화이팅
- 텐서플로2와 머신러닝으로 시작하는 자연어처리
- 히스토그램
- 회귀분석
Archives
- Today
- Total
데이터 한 그릇
딥러닝 과적합 피하기 본문
EDA
import pandas as pd
df = pd.read_csv('C:\\Users\\user\\Desktop\\080228\\deeplearning\\dataset\\sonar.csv',
header = None,
)
print(df.info())
df[60].unique()
모델 생성 및 학습
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.preprocessing import LabelEncoder
import pandas as pd
import numpy as np
import tensorflow as tf
df = pd.read_csv('C:\\Users\\user\\Desktop\\080228\\deeplearning\\dataset\\sonar.csv',
header = None,
)
dataset = df.values
X = dataset[:,0:60].astype(float)
Y_obj = dataset[:,60]
#문자열 변환
encoder = LabelEncoder()
Y = encoder.fit_transform(Y_obj)
#모델 구축
model = Sequential()
model.add(Dense(24, input_dim = 60, activation = 'relu'))
model.add(Dense(10, activation = 'relu'))
model.add(Dense(1, activation = 'sigmoid'))
#모델 컴파일
model.compile(loss = 'binary_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
#모델 학습
model.fit(X, Y, epochs = 200, batch_size = 5)
#결과
print('Accuracy : {:.4f}'.format(model.evaluate(X, Y)[1]))
Accuracy : 1.000
100 정확도를 자랑한단건데 그럴 리가 없다. 과적합 문제가 발생한 것
과적합 이해하기
과적합은 과도하게 학습데이터에 맞추어 예측을 했기 때문에 새로운 데이터가 들어오면 제대로 예측할 수 없는 문제를 말함.
딥러닝 층이 너무 많거나, 테스트 데이터 셋과 학습 데이터 셋이 같을 때 생기기도 한다.
따라서 테스트 데이터의 성능이 최고로 좋았을 때, 성능이 나빠지기 직전에 학습을 끊어야 한다.(은닉층의 수, 학습 데이터 학습 등)
주의 : 머신러닝은 `predict()` 함수를 이용해서 결과를 pred 변수에 저장하고 그 결과값을 실제 정답인 y_test 와 비교해서 metrics 를 했는데, 여기서는 model.evaluate() 에 X_test 를 넣고 바로 y_test 를 집어넣어서 평가를 진행한 걸 알 수 있다.
df = pd.read_csv('C:\\Users\\user\\Desktop\\080228\\deeplearning\\dataset\\sonar.csv',
header = None,
)
dataset = df.values
X = dataset[:,0:60].astype(float)
Y_obj = dataset[:,60]
#문자열 변환
encoder = LabelEncoder()
Y = encoder.fit_transform(Y_obj)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,Y, test_size = 0.3, random_state = 0)
#모델 구축
model = Sequential()
model.add(Dense(24, input_dim = 60, activation = 'relu'))
model.add(Dense(10, activation = 'relu'))
model.add(Dense(1, activation = 'sigmoid'))
#모델 컴파일
model.compile(loss = 'binary_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
#모델 학습
model.fit(X_train, y_train, epochs = 130, batch_size = 5)
#결과
print('Accuracy : {:.4f}'.format(model.evaluate(X_test, y_test)[1]))
Accuracy : 0.7937
모델 저장하기
from tensorflow.keras.models import load_model
model.save('my_model.h5')
model = load_model('my_model.h5')
'딥러닝 > 모두의 딥러닝' 카테고리의 다른 글
딥러닝 선형 회귀 실습 (0) | 2022.01.05 |
---|---|
딥러닝 베스트 모델 만들기 (0) | 2022.01.05 |
딥러닝 실습 (0) | 2022.01.05 |
딥러닝 모델 설계하기 (0) | 2022.01.05 |
신경망에서 딥러닝으로 (0) | 2022.01.04 |
Comments