실제 데이터로 모델 생성하기

김민지·2024년 3월 30일

데이터패턴인식

목록 보기
9/13
  • 지금까지는 참/거짓, 카테고리 예측 등의 분류 문제를 다룸
  • 이번에는 수치예측 문제를 다룰 예정
import pandas as pd

!git clone https://github.com/taehojo/data.git

df.pd.read_csv("./data/house_train.csv")

  • 총 80개의 속성, 마지막 속성이 우리가 예측해야하는 값인 집값
  • df.dtypes를 사용해서 데이터의 형태를 알아봄

결측치 처리하기

  • isnull() : 결측치가 있는지 검사하는 함수
# 각 속성마다 결측치가 모두 몇개인지 세고, 가장 많은 것부터 순서대로 나열한 후 20개만 출력
df.isnull().sum().sort_values(ascending = False).head(20)

  • 결측치 채워주기
df = df.fillna(df.mean) # null값을 평균값으로 채우기
# 이 외에도 fillna() 함수 안에 0을 넣으면 결측치가 모두 0이 됨
  • 결측치가 있는 속성 삭제하기
df = df.dropna(how = 'any') # 결측치가 하나라도 있는 속성은 삭제
df = df.dropna(how = 'all') # 모든 값이 결측치인 속성을 삭제

카테고리형 변수를 0, 1로 이루어진 변수로 바꾸기

  • get_dummies() 함수 이용하기: 카테고리형 변수를 모두 one-hot encoding 처리하므로, 전체 열이 81개에서 290개로 증가함
df = pd.get_dummies(df)

속성별 관련도 추출

  1. 데이터 사이의 상관관계를 df_corr 변수에 저장
  2. 집값과 관련이 큰 순서로 정렬해 df_corr_sort 변수에 저장
  3. 집값과 관련도가 가장 큰 열개의 속성 출력
df_corr = df.corr()
df_corr_sort = df_corr.sort_values('SalePrice', ascending = False)
df_corr_sort['SalePrice'].head(10)

  1. 상관도 그래프 시각화
cols = ['SalePrice', 'OverallQual','GrLivArea', 'GarageCars', 'GarageArea', 'TotalBsmtSF']
sns.pairplot(df[cols])
plt.show()

  • 이를 통해, 붉은 사각형으로 표시된 부분의 속성들이 SalePrice와 연관이 있음을 알 수 있음

주택 가격 예측 모델

  • 선형회귀이므로 손실함수(loss)에 mean_squared_error를 적어줌
  • 입력 속성의 개수: X.shape[1]로 지정해서 자동으로 세도록 함
  • 20번 이상 결과가 향상되지 않으면 자동 중단: EarlyStopping(monitor = "val_loss", patience = 20)
  • 학습 중단 시점은 실행할 때마다 다를 수 있음

0개의 댓글