HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📩
캐글 데이터로 살펴보는 데이터분석 With Python and SAS
/
👩‍💼
3.5 보스턴 주택가격 예측 Tensorflow - 1
👩‍💼

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

1. 데이터 전처리1) 필요 패키지 불러오기 2) 데이터 준비3) 모델링4) 스코어링결론

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 image
 

결론

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