25.11.10 개발일지 / 딥러닝5

2025. 11. 14. 14:17·LMS 7/개발일지

Chapter15. 실제 데이터로 만들어 보는 모델

1. 데이터 전처리

1) 결측치 > 평균 변경

import pandas as pd

!git clone https://github.com/taehojo/data.git

df = pd.read_csv("./data/house_train.csv")

// isnull > 결측치 확인 함수
df.isnull().sum().sort_values(ascending=False).head(20)

// 전처리
// 카테고리형 변수 > 0/1 변수
df = pd.get_dummies(df)
// 결측치 > 평균으로 채움
df = df.fillna(df.mean())

2) 속성별 관련도 추출(필요 정보 추출)

import pandas as pd

!git clone https://github.com/taehojo/data.git

df = pd.read_csv("./data/house_train.csv")

// isnull > 결측치 확인 함수
df.isnull().sum().sort_values(ascending=False).head(20)

// 전처리
// 카테고리형 변수 > 0/1 변수
df = pd.get_dummies(df)
// 결측치 > 평균으로 채움
df = df.fillna(df.mean())

// 속성별 관련도
df_corr = df.corr()
df_corr_sort = df_corr.sort_values('SalePrice', ascending=False)
df_corr_sort['SalePrice'].head(10)

2. 주택 가격 예측 모델

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.callbacks import EarlyStopping
from tensorflow.keras.callbacks import ModelCheckpoint
from sklearn.model_selection import train_test_split

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

// 데이터
// 데이터 준비
!git clone https://github.com/taehojo/data.git
df = pd.read_csv("./data/house_train.csv")
// 전처리
// 카테고리형 변수 > 0/1 변수
df = pd.get_dummies(df)
// 결측치 > 평균으로 채움
df = df.fillna(df.mean())
// 상관관계 저장
df_corr = df.corr()
df_corr_sort = df_corr.sort_values('SalePrice', ascending=False)
// 집 값을 제외한 나머지 열 저장
cols_train = ['OverallQual', 'GrLivArea', 'GarageCars', 'GarageArea', 'TotalBsmtSF']
x_train_pre = df[cols_train]
// 집 값 저장
y = df['SalePrice'].values
// 80% : 학습셋 / 20% : 테스트셋
x_train, x_test, y_train, y_test = train_test_split(x_train_pre, y, test_size=0.2)

// 모델 구조 설정
model = Sequential()
model.add(Dense(10, input_dim=x_train.shape[1], activation='relu'))
model.add(Dense(30, activation='relu'))
model.add(Dense(40, activation='relu'))
model.add(Dense(1))
model.summary()
// 모델 실행
model.compile(optimizer='adam', loss='mean_squared_error')
// 자동 중단
early_stopping_callback = EarlyStopping(monitor='val_loss', patience=20)
// 모델 폴더경로, 이름
modelpath = "./data/model/Ch15-house.keras"
// 최적화 모델 업데이트-저장
checkpointer = ModelCheckpoint(filepath=modelpath, monitor='val_loss', verbose=0, save_best_only=True)
// 실행 설정
history = model.fit(x_train, y_train, validation_split=0.25, epochs=2000, batch_size=32, callbacks=[early_stopping_callback, checkpointer])

// 시각화
// 출력
real_prices = []
pred_prices = []
x_num = []
n_iter = 0
y_prediction = model.predict(x_test).flatten()
for i in range(25):
  real = y_test[i]
  prediction = y_prediction[i]
  print("실제가격: {:.2f}, 예상가격: {:.2f}".format(real, prediction))
  real_prices.append(real)
  pred_prices.append(prediction)
  n_iter = n_iter + 1
  x_num.append(n_iter)
// 그래프
plt.plot(x_num, pred_prices, label="predicted price")
plt.plot(x_num, real_prices, label="real prece")
plt.legend()
plt.show()

Chapter10 - 15 프레임워크, 라이브러리

1. TensorFlow

> 딥러닝 프레임워크(모델의 구조설계, 학습, 추론까지 직접 제어를 가능하게 함)

2. Keras

> TensorFlow 고수준 추상화 API로써 복잡한 모델설계, 학습, 추론 과정을 간단히 작성할 수 있도록 도와주는 라이브러리

2.1 Sequential

> Keras 라이브러리 중 딥러닝에 필요한 여러층(입력층, 은닉층, 출력층)을 순서대로 쌓는 단순 모델 클래스

model = Sequential()

▲ 이를 통해 만들어진 모델은 이제 층을 쌓을 수 있는 상태가 됨

2.2 Dense

> Keras 라이브러리 중 실제 층을 생성할 수 있는 클래스

Dense(출력 노드수, 입력층, 활성화 함수)
Dense(30, input_dim=16, activation='relu') // 노드 수 = 30, 입력층 노드 수 = 16, 활성화 함수 = 렐루함수

2.3 compile

> 모델 학습 전 설정 단계

// 모델은 생성되었다 가정
model.compile(가중치 알고리즘, 손실 함수, 성능 평가 수치)
// adam 방식으로 가중치 조정, 교차 엔트로피 방식으로 오차 계산, 정확도로 성능 평가
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

2.4 fit

> 실제 학습 실행 단계

model.fit(입력 데이터, 정답 데이터, 학습 반복 횟수, 한번에 학습할 샘플 수, 검증용 데이터 비율, 출력 모드)
// 입력 데이터는 x_train, 정답 데이터는 y_train, 
// 10번 반복, 한번에 16개 샘플 이용, 훈련 데이터 중 20% 는 검증셋, 진행바로 출력
model.fit(x_train, y_train, epochs=10, batch_size=16, validation_split=0.2, verbose=1)

3. pandas

> 행(row)과 열(column)로 구성된 표 데이터를 쉽게 다루기 위한 라이브러리

3.1 read_csv

> csv는 쉼표(,)로 구분된 파일을 의미

df = pd.read_csv('./data/pima-indians-diabetes3.csv') // 해당 경로에 있는 csv 파일을 데이터프레임으로 불러오기

3.2 head

> 데이터프레임의 앞부분을 출력할 때 사용

df.head() // 기본값 : 상위 5개 행 출력
df.head(10) // 상위 10개 행 출력

3.3 value_count

> 특정 열(column)의 값들이 몇번 나오는지 카운트

df["diabetes"].value_counts() // diabetes 열의 해당하는 값 카운트

3.4 corr

> 각 항목이 서로 어느정도 상관관계를 가지는지

df.corr()

3.5 iloc

> 행과 열을 숫자위치로 선택하는 도구

df.iloc[행 위치, 열 위치]
df.iloc[:, 0:8] // 행은 전부, 열은 0부터 7인덱스까지

3.6 get_dummies

> 문자열 데이터를 0과 1로만 이루어진 형태로 변경(원-핫 인코딩)

pd.get_dummies(데이터프레임)
pd.get_dummies(df)

4. sklearn

> 데이터 분석, 머신러닝 알고리즘을 쉽게 구현할 수 있도록 만든 라이브러리

4.1 train_test_split

> 학습용/테스트용으로 무작위로 분할해주는 클래스

x_train, x_test, y_train, y_test = train_test_split(x, y, 테스트셋 비율, 랜덤)
// x y 데이터프레임, 훈련셋 0.7/테스트셋 0.3으로 분할, 랜덤섞기
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, shuffle=True)

5. matplotlib.pyplot

> 그래프를 그리는 라이브러리

> 보통 as plt를 통해 plt로 줄여씀

5.1 plot

> 선 그래프

plt.plot(x, y, 마커모양, 색상, 마커크기, 범례이름)
plt.plot(x, y, "o"(점), c="red", markersize=2, label="Testset_loss")

 

5.2 xlabel/ylabel(축 이름), legend(범례)

plt.xlabel('x축 이름')
plt.ylabel('y축 이름')
plt.legend() // 범례표시

5.3 show

> 그래프 출력

plt.show() // 그래프 표시

'LMS 7 > 개발일지' 카테고리의 다른 글

25.11.09 개발일지 / 딥러닝4  (1) 2025.11.14
25.11.06 개발일지 / 딥러닝3  (0) 2025.11.14
25.11.05 개발일지 딥러닝2(모두의 딥러닝 개정 4판)  (0) 2025.11.14
25.11.03 개발일지 / 딥러닝 1(모두의 딥러닝 개정4판)  (0) 2025.11.14
25.10.30 개발일지 / C++ MFC 프로젝트 5일차  (0) 2025.11.14
'LMS 7/개발일지' 카테고리의 다른 글
  • 25.11.09 개발일지 / 딥러닝4
  • 25.11.06 개발일지 / 딥러닝3
  • 25.11.05 개발일지 딥러닝2(모두의 딥러닝 개정 4판)
  • 25.11.03 개발일지 / 딥러닝 1(모두의 딥러닝 개정4판)
m_Dev
m_Dev
  • m_Dev
    m_Dev
    m_Dev
  • 전체
    오늘
    어제
    • 분류 전체보기
      • MAIN STUDY
        • 정보보안
        • 빅데이터
        • 정보처리
        • 컴퓨터 구조
        • 기타
      • JOB
        • Study
        • Project
      • LMS 7
        • 개발일지
      • FRAMEWORK
        • Qt
        • MFC
        • Winform
        • WPF
        • MAUI
      • NETWORK
        • Study
        • Assignment
      • PYTHON
        • Set
        • Study
        • Assignment
        • Project
      • C
        • Set
        • Study
        • Assignment
        • Project
      • C++
        • Set
        • Study
        • Assignment
        • Project
      • C#
        • Set
        • Study
        • Assignment
        • Project
      • DATABASE
        • MySQL
        • SQLite
      • IDE
        • VisualStudioCode
        • VisualStudio
        • Pycharm
        • Colab
      • 기타
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
m_Dev
25.11.10 개발일지 / 딥러닝5
상단으로

티스토리툴바