출처: https://astrocosmos.tistory.com/202 [ASTROCOSMOS:티스토리] '딥러닝' 태그의 글 목록 :: 하나둘셋넷
728x90

house price 예측하기

 

라이브러리 불러오기

import pandas as pd

 

데이터 읽기

df = pd.read_csv('kc_houseprice.csv')
display(df.columns)
df.head()

 

컬럼 이름과 데이터 정보를 확인하였다.

 

df.info()

현재 데이터에서 date는 object 타입이다.

 

# 현재 date의 데이터만 object 타입임을 확인할 수 있다.

 

데이터 전처리

# 위에서 date 열을 보면 20141209T~~~~ 형식으로 되어있어서 활용하기 어렵다.

# 따라서 분석에 유효한 앞에 4글자만 가져오도록 한다.

# 이후에는 float 타입으로 변환

버릴 데이터를 찾아보자

df['date'] = df.loc[:,'date'].str[:4]
df['date'] = df.loc['date'].astype(float)
display(df.info())
display(df)

데이터에서 object 형이 없음을 확인했다.
문제 조건에 따라서 sqft_living15, sqft_lot15 열을 삭제하였고 확인

 

타겟 데이터 분리

target = 'price'
x = df.drop(['sqft_living15', 'sqft_lot15' ,target], axis = 1)
y = df[target]

display(x)
display(x.columns)
display(y)

 

훈련용 데이터 분리하기

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 = 2023)

 

데이터 스케일링

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
x_train = scaler.fit_transform(x_train)
x_val = scaler.transform(x_val)

 

모델 설계

nfeatures = x_train.shape[1]

from keras.backend import clear_session
clear_session()

from keras.layers import Dense, Dropout
from keras.models import Sequential

model_DNN = Sequential()
model_DNN.add(Dense(18, input_shape = (nfeatures, ), activation = 'relu') )
model_DNN.add(Dropout(0.3) )
model_DNN.add(Dense(4, activation = 'relu'))
model_DNN.add(Dense(1) )

model_DNN.summary()

 

Param # 

출력 노드 * ( 입력노드 + 1 ) = Param

 

18 * ( 입력차원 + 1 ) = 18 * 19 = 342

4 * ( 입력차원 + 1 ) = 4 * 19 = 76

1 * ( 입력차원 + 1 ) = 1 * 5 = 5

 

따라서, 342 + 76 + 5 = 423

Total params : 423과 일치한다.

 

모델 컴파일 및 학습

from keras.optimizers import Adam

model_DNN.compile(optimizer = Adam(learning_rate = 0.01), loss = 'mse')
hist = model_DNN.fit(x_train, y_train, epochs = 50, validation_split = 0.2).history

 

 

검증

from sklearn.metrics import *

pred = model_DNN.predict(x_val)

print(mean_squared_error(y_val, pred, squared = False) ) # RMSE
print(mean_absolute_error(y_val, pred)

 

 

 

728x90
728x90

KT Aivle School 에이블스쿨 기자단] 9.25(월) ~ 10.1(일) 미프, 딥러닝, 코딩 테스트

내용

  • 미프 4일차 기억에 남는 부분 : 수치형 데이터를 만들기 위한 노가다...
  • 딥러닝 1일차 종합실습_carseat
  • 코딩 테스트 메일 도착

미프 4일차 기억에 남는 부분 : 수치형 데이터를 만들기 위한 반복 작업...

원본 데이터

 위의 데이터를 보면 수치형 데이터로 나타나지 않은 부분들이 있기 때문에 데이터 분석을 위하여 모두 수치형 데이터로 바꿀 필요가 있었고,

 "범주형 데이터"  ⇒ "수치형 데이터" 과정은 손가락 아픈 반복 작업이 필요했다

완성
완성을 위해 필요했던 코드

 미프가 다 끝나고 완성한 부분을 간추려 보니, 별거 아니라고 느껴지긴 하지만

 미프를 진행하는 동안에는 같은 작업을 여러 번 계속 하다보니 손가락이 아프게 느껴져 기억에 남는 부분 중 하나가 되었다.

 

딥러닝 1일차 종합실습_carseat

딥러닝 회귀 모델을 사용하여 carseat 종합실습을 진행하였다

데이터 설명
데이터 형태
코드 모습

 

* model을 생성하기 전에 필수는 아니지만 clear_session()을 하는 것이 권장된다.

코드는

from keras.backend import clear_session

clear_session()

 

* 모델을 생성할 때는 Sequential 모델을 사용하고, Dense 레이어를 이용

히든 레이어에는 relu를 activation으로 사용

 

from keras.models import Sequential

from keras.layers import Dense

 

model = Sequential([Dense(18 ,input_shape = (nfeatures,) , activation = 'relu' ),

                    Dense(4, activation='relu') ,

                    Dense(1) ] )

 

 

코딩 테스트 메일 도착

 

아직 코딩 실력이 부족하다고 느끼지만, 어차피 실전을 겪고 깨져봐야 실력이 늘거라 생각해서 시험을 신청했다

728x90

+ Recent posts