22장 캐글로 시작하는 새로운 도전¶
모델 학습하기¶
In [2]:
Copied!
from tensorflow.keras.models import load_model
import pandas as pd
# 캐글에서 내려받은 테스트셋을 불러옵니다.
kaggle_test = pd.read_csv("./data/house_test.csv")
kaggle_test
from tensorflow.keras.models import load_model
import pandas as pd
# 캐글에서 내려받은 테스트셋을 불러옵니다.
kaggle_test = pd.read_csv("./data/house_test.csv")
kaggle_test
Out[2]:
| Id | MSSubClass | MSZoning | LotFrontage | LotArea | Street | Alley | LotShape | LandContour | Utilities | ... | ScreenPorch | PoolArea | PoolQC | Fence | MiscFeature | MiscVal | MoSold | YrSold | SaleType | SaleCondition | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1461 | 20 | RH | 80.0 | 11622 | Pave | NaN | Reg | Lvl | AllPub | ... | 120 | 0 | NaN | MnPrv | NaN | 0 | 6 | 2010 | WD | Normal |
| 1 | 1462 | 20 | RL | 81.0 | 14267 | Pave | NaN | IR1 | Lvl | AllPub | ... | 0 | 0 | NaN | NaN | Gar2 | 12500 | 6 | 2010 | WD | Normal |
| 2 | 1463 | 60 | RL | 74.0 | 13830 | Pave | NaN | IR1 | Lvl | AllPub | ... | 0 | 0 | NaN | MnPrv | NaN | 0 | 3 | 2010 | WD | Normal |
| 3 | 1464 | 60 | RL | 78.0 | 9978 | Pave | NaN | IR1 | Lvl | AllPub | ... | 0 | 0 | NaN | NaN | NaN | 0 | 6 | 2010 | WD | Normal |
| 4 | 1465 | 120 | RL | 43.0 | 5005 | Pave | NaN | IR1 | HLS | AllPub | ... | 144 | 0 | NaN | NaN | NaN | 0 | 1 | 2010 | WD | Normal |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 1454 | 2915 | 160 | RM | 21.0 | 1936 | Pave | NaN | Reg | Lvl | AllPub | ... | 0 | 0 | NaN | NaN | NaN | 0 | 6 | 2006 | WD | Normal |
| 1455 | 2916 | 160 | RM | 21.0 | 1894 | Pave | NaN | Reg | Lvl | AllPub | ... | 0 | 0 | NaN | NaN | NaN | 0 | 4 | 2006 | WD | Abnorml |
| 1456 | 2917 | 20 | RL | 160.0 | 20000 | Pave | NaN | Reg | Lvl | AllPub | ... | 0 | 0 | NaN | NaN | NaN | 0 | 9 | 2006 | WD | Abnorml |
| 1457 | 2918 | 85 | RL | 62.0 | 10441 | Pave | NaN | Reg | Lvl | AllPub | ... | 0 | 0 | NaN | MnPrv | Shed | 700 | 7 | 2006 | WD | Normal |
| 1458 | 2919 | 60 | RL | 74.0 | 9627 | Pave | NaN | Reg | Lvl | AllPub | ... | 0 | 0 | NaN | NaN | NaN | 0 | 11 | 2006 | WD | Normal |
1459 rows × 80 columns
In [3]:
Copied!
# 카테고리형 변수를 0과 1로 이루어진 변수로 바꾸어 줍니다.(15장 2절)
kaggle_test = pd.get_dummies(kaggle_test)
# 결측치를 전체 칼럼의 평균으로 대체하여 채워줍니다.
kaggle_test = kaggle_test.fillna(kaggle_test.mean())
# 업데이트된 데이터프레임을 출력해 봅니다.
kaggle_test
# 카테고리형 변수를 0과 1로 이루어진 변수로 바꾸어 줍니다.(15장 2절)
kaggle_test = pd.get_dummies(kaggle_test)
# 결측치를 전체 칼럼의 평균으로 대체하여 채워줍니다.
kaggle_test = kaggle_test.fillna(kaggle_test.mean())
# 업데이트된 데이터프레임을 출력해 봅니다.
kaggle_test
Out[3]:
| Id | MSSubClass | LotFrontage | LotArea | OverallQual | OverallCond | YearBuilt | YearRemodAdd | MasVnrArea | BsmtFinSF1 | ... | SaleType_ConLw | SaleType_New | SaleType_Oth | SaleType_WD | SaleCondition_Abnorml | SaleCondition_AdjLand | SaleCondition_Alloca | SaleCondition_Family | SaleCondition_Normal | SaleCondition_Partial | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1461 | 20 | 80.0 | 11622 | 5 | 6 | 1961 | 1961 | 0.0 | 468.0 | ... | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| 1 | 1462 | 20 | 81.0 | 14267 | 6 | 6 | 1958 | 1958 | 108.0 | 923.0 | ... | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| 2 | 1463 | 60 | 74.0 | 13830 | 5 | 5 | 1997 | 1998 | 0.0 | 791.0 | ... | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| 3 | 1464 | 60 | 78.0 | 9978 | 6 | 6 | 1998 | 1998 | 20.0 | 602.0 | ... | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| 4 | 1465 | 120 | 43.0 | 5005 | 8 | 5 | 1992 | 1992 | 0.0 | 263.0 | ... | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 1454 | 2915 | 160 | 21.0 | 1936 | 4 | 7 | 1970 | 1970 | 0.0 | 0.0 | ... | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| 1455 | 2916 | 160 | 21.0 | 1894 | 4 | 5 | 1970 | 1970 | 0.0 | 252.0 | ... | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
| 1456 | 2917 | 20 | 160.0 | 20000 | 5 | 7 | 1960 | 1996 | 0.0 | 1224.0 | ... | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
| 1457 | 2918 | 85 | 62.0 | 10441 | 5 | 5 | 1992 | 1992 | 0.0 | 337.0 | ... | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| 1458 | 2919 | 60 | 74.0 | 9627 | 7 | 5 | 1993 | 1994 | 94.0 | 758.0 | ... | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
1459 rows × 271 columns
In [4]:
Copied!
# 학습에 사용된 열을 저장합니다.
cols_kaggle=['OverallQual','GrLivArea','GarageCars','GarageArea','TotalBsmtSF']
K_test = kaggle_test[cols_kaggle]
# 학습에 사용된 열을 저장합니다.
cols_kaggle=['OverallQual','GrLivArea','GarageCars','GarageArea','TotalBsmtSF']
K_test = kaggle_test[cols_kaggle]
In [5]:
Copied!
# 앞서 15장에서 만든 모델을 불러 옵니다.
model = load_model("./data/model/Ch15-house.keras")
# 예측 값과 실제 값, 실행 번호가 들어갈 빈 리스트를 만듭니다.
ids =[]
# 25개의 샘플을 뽑아 실제값, 예측값을 출력해 봅니다.
Y_prediction = model.predict(K_test).flatten()
for i in range(len(K_test)):
id = kaggle_test['Id'][i]
prediction = Y_prediction[i]
ids.append([id, prediction])
# 테스트 결과의 저장 환경을 설정합니다.
import time
timestr = time.strftime("%Y%m%d-%H%M%S")
filename = str(timestr)
outdir = './data/kaggle/'
# Id와 집 값을 csv 파일로 저장합니다.
df = pd.DataFrame(ids, columns=["Id", "SalePrice"])
df.to_csv(str(outdir + filename + '_submission.csv'), index=False)
# 앞서 15장에서 만든 모델을 불러 옵니다.
model = load_model("./data/model/Ch15-house.keras")
# 예측 값과 실제 값, 실행 번호가 들어갈 빈 리스트를 만듭니다.
ids =[]
# 25개의 샘플을 뽑아 실제값, 예측값을 출력해 봅니다.
Y_prediction = model.predict(K_test).flatten()
for i in range(len(K_test)):
id = kaggle_test['Id'][i]
prediction = Y_prediction[i]
ids.append([id, prediction])
# 테스트 결과의 저장 환경을 설정합니다.
import time
timestr = time.strftime("%Y%m%d-%H%M%S")
filename = str(timestr)
outdir = './data/kaggle/'
# Id와 집 값을 csv 파일로 저장합니다.
df = pd.DataFrame(ids, columns=["Id", "SalePrice"])
df.to_csv(str(outdir + filename + '_submission.csv'), index=False)
In [ ]:
Copied!
