👩‍💼

3.5 보스턴 주택가격 예측 Tensorflow - 1

1. 데이터 전처리

앞서 분석했던 Python 분석 자료에 Tensorflow를 이용한 딥러닝 모델을 적용하여 분석해보겠습니다.

1) 필요 패키지 불러오기

분석에 필요한 패키지를 불러옵니다.
from tensorflow import keras

2) 데이터 준비

train_df_new는 분석데이터 train_target은 타겟 데이터로 데이터를 준비합니다. 분석에 사용되지 않는 ID는 제거합니다.
# 분석 데이터 준비 train_df_new=train_df[list(test_df)] del train_df_new['Id'] train_target=train_df['SalePrice'] train_target=np.log(train_target)

3) 모델링

다음과 같이 모델을 구축합니다. 초기 Keras.Sequential()에 변수갯수만큼 input_shape를 적용하고, 예측력을 좋게 하기 위해 여러개의 Dense를 적용하여 다음과 같이 모델을 구축합니다.
model = keras.Sequential() model.add(keras.layers.InputLayer(input_shape=(23,))) model.add(keras.layers.Dense(10, activation='relu')) model.add(keras.layers.Dense(15, activation='relu')) model.add(keras.layers.Dense(20, activation='relu')) model.add(keras.layers.Dense(25, activation='relu')) model.add(keras.layers.Dense(30, activation='relu')) model.add(keras.layers.Dense(35, activation='relu')) model.add(keras.layers.Dense(40, activation='relu')) model.add(keras.layers.Dense(1))
다음과 같이 최적화 시킵니다. 회귀모델이므로 loss는 mse, optiomizer는 adam을 사용합니다.
model.compile(loss='mse', optimizer='adam') model.summary()
이제 모델을 학습시킵니다.
epochs = 500 history = model.fit(x=train_df_new, y=train_target, batch_size=20, epochs=epochs, verbose=2)
만들어진 모델을 다음과 같이 저장합니다.
model.save('model_v2.h5')

4) 스코어링

준비된 테스트 데이터를 만들어진 모델에 학습시킵니다.
test_Id = test_df['Id'] del test_df['Id'] predict = model.predict(test_df) predict
로그화된 값에 지수함수를 곱하여 원래 값으로 환산시킵니다.
predict = np.exp(predict) predict
예측값을 다음과 같이 처리하여 데이터 프레임 형식으로 만들 준비를 합니다.
my_list = map(lambda x: x[0], predict) predict = pd.Series(my_list)
이제 pd.DataFrame을 사용하여 ID와 SalePrice를 포함한 result_tf.csv 결과 파일을 생성합니다.
result =pd.DataFrame({ 'Id': test_Id, 'SalePrice': predict }) result.to_csv('result_tf.csv', index=False)
 
생성된 파일을 제출하면 다음과 같은 결과를 얻을 수 있습니다. 0.16806로 상당히 좋은 결과를 얻을 수 있습니다.
notion imagenotion image
 

결론

SAS와 Pyrhon, Tensorflow를 이용하여 데이터 전처리, 모델 구축, Kaggle에 결과도 제출해 보면서 어떠셨나요? 조금 더 데이터와 친근하게 느껴지시나요? 저희가 분석한 최종 결과는 Score - 0.13656으로 약 1,800위에 랭크된 것을 볼 수 있습니다.(2020년 11월 30일 기준)
notion imagenotion image
Kaggle과 같은 분석 대회는 분석한 결과에 대해 빠르게 결과를 알 수 있고, 많은 사람과 경쟁도 하며 즐길수 있다는 장점이 있습니다. 앞으로도 더 많은 대회들을 다양한 데이터와 모델을 다뤄보았으면 좋겠습니다.