7. 프로젝트 3
[프로젝트 3] 캐글러가 되자: housing data (2)
1. 목표
v 캐글 가입하기
v 학습 데이터에서 라벨 제거하기
v 결측치 데이터 비율 계산하기
2. 프로젝트 코드
코드 구현: missing 라이브러리로 결측치 데이터 시각화 하기
import missingno as msno # 라이브러리 임포트
## 코드시작 ##
# 미션 3-2 코드 작성 : data에 결손치를 missingno 라이브러리를 이용하여 시각화 해보세요.
msno.matrix(data)
## 코드종료 ##
sub_id = data['id'][train_len:]
del data['id']
print(data.columns)
data['date'] = data['date'].apply(lambda x : str(x[:6]))
data.head()
fig, ax = plt.subplots(9, 2, figsize=(12, 50)) # 가로스크롤 때문에 그래프 확인이 불편하다면 figsize의 x값을 조절해 보세요.
# date 변수(count==0인 경우)는 제외하고 분포를 확인
count = 1
columns = data.columns
for row in range(9):
for col in range(2):
sns.kdeplot(data=data[columns[count]], ax=ax[row][col])
ax[row][col].set_title(columns[count], fontsize=15)
count += 1
if count == 19 :
break
코드 구현: 로그변환 수행
## 코드시작 ##
# 미션 4 코드 작성 : 로그변환을 수행해보세요.
# 치우친 분포의 컬럼을 저장해 두기
skew_columns = ['bedrooms', 'sqft_living', 'sqft_lot', 'sqft_above', 'sqft_basement', 'sqft_lot15', 'sqft_living15']
for c in skew_columns:
data[c] = np.log1p(data[c]) # '...' 을 코드로 채워주세요
## 코드종료 ##
fig, ax = plt.subplots(4, 2, figsize=(12, 24))
count = 0
for row in range(4):
for col in range(2):
if count == 7:
break
sns.kdeplot(data=data[skew_columns[count]], ax=ax[row][col])
ax[row][col].set_title(skew_columns[count], fontsize=15)
count += 1
xx = np.linspace(0, 10, 500)
yy = np.log(xx)
plt.hlines(0, 0, 10)
plt.vlines(0, -5, 5)
plt.plot(xx, yy, c='r')
plt.show()
sns.kdeplot(y) # y는 미션 2에서 price를 저장하고 있음.
plt.show()
y_log_transformation = np.log1p(y) # 미션4의 힌트가 되겠네요 ^^
sns.kdeplot(y_log_transformation)
plt.show()
sub = data.iloc[train_len:, :]
x = data.iloc[:train_len, :]
print(x.shape)
print(sub.shape)
© NAVER Connect Foundation. All Rights Reserved
'취업준비 > 인공지능' 카테고리의 다른 글
[AI Tech] 2주차 8-2차시 피처 엔지니어링 (2) (0) | 2024.01.23 |
---|---|
[AI Tech] 2주차 8-1차시 피처 엔지니어링 (1) (0) | 2024.01.23 |
[AI Tech] 1주차 6차시 프로젝트 2 (1) | 2024.01.21 |
[AI Tech] 1주차 5-3차시 Quiz 3 (1) | 2024.01.21 |
[AI Tech] 1주차 5-2차시 트리 모델 연습 (1) | 2024.01.21 |