import pandas as pd
# 깃허브에 데이터를 가져옴
!git clone https://github.com/taehojo/data.git
# 집 값 데이터를 불러옴
df = pd.read_csv("./data/house_train.csv")
# 데이터 파악하기
df
카테고리 변수 처리
df['SaleCondition'].value_counts()
# 카테고리형 변수를 0과 1로 이루어진 변수로 변경
df = pd.get_dummies(df)
SaleCondition_cols = [col for col in df.columns if 'SaleCondition' in col]
SaleCondition_cols
df[SaleCondition_cols]
결측치 처리
# 결측치를 전체 칼럼의 평균으로 대체하여 채움
df = df.fillna(df.mean())
# 속성별로 결측치가 몇 개인지 확인
df.isnull().sum().sort_values(ascending=False).head(20)
속성별 관련도 추출
# 데이터 사이의 상관 관계를 저장
df_corr = df.corr()
# 집 값과 관련이 큰 것부터 순서대로 저장
df_corr_sort = df_corr.sort_values('SalePrice', ascending=False)
# 집 값과 관련도가 가장 큰 10개의 속성들을 출력df_corr_sort['SalePrice'].head(10)
# 집 값과 관련도가 가장 높은 속성들(여기서는 5개)을 추출해서 상관도 그래프
cols=['SalePrice','OverallQual','GrLivArea','GarageCars','GarageArea','TotalBsmtSF']
sns.pairplot(df[cols])
plt.show();
# 중요 속성만 추려서 학습 데이터 셋을 만듬
cols_train=['OverallQual','GrLivArea','GarageCars','GarageArea','TotalBsmtSF']
X_train_pre = df[cols_train]
# 집 값을 저장
y = df['SalePrice'].values
데이터 셋 분할
# 학습 데이터, 테스트 데이터 준비
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model.compile(optimizer ='adam', loss = 'mean_squared_error')
과적합 방지
# 20회 이상 결과가 향상되지 않으면 자동으로 중단되게끔 설정
early_stopping_callback = EarlyStopping(monitor='val_loss', patience=20)
# 모델의 이름
modelpath="./data/model/Ch15-house.hdf5"
# 모델을 업데이트하고 저장
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])