.info()
를 이용해 결측치가 존재하는지 여부와 얼마나 결측치가 있는지 수치로 간단히 살펴봤었음.missingno
라는 패키지를 이용해 matrix를 그리면 결측치도 시각화해서 살펴볼 수 있음.결측치가 있다고 판단한 이유?
- isnull()로 확인했을 경우 -> 결측치가 없는 것으로 나왔지만(-1로 대체되어 있었기 때문에)
- 데이터셋 정보에서 보면 -1의 경우에는 누락된 값이라고 나와 있기 때문에 다른 값으로의 대체 또는 drop 등 재처리가 필요
- 이 값을 다시 NaN으로 바꿔준 다음 시각화 진행
import missingno as msno
msno.matrix(df=train_copy.iloc[:,2:39], figsize=(20, 14), color=(0.42, 0.1, 0.05))
Binary features inspection의 주 사용 목적
- 데이터 편중 확인
- 피쳐가 0이 대부분이며 1이 거의 없다면 -> 모델이 1을 학습하는 데에 문제가 생길 수 있음
- 상관관계 파악
- 높은 상관관계가 있는 피쳐들은 중복 정보일 가능성이 높음
- Target 변수와의 관계
- 특정 이진 특성이 타깃 값에 어떻게 영향을 미치는지 확인
- 이상치
- 카테고리 분석
- 데이터를 특정 그룹으로 나눠서 각 그룹의 분포 분석 가능
bin_col = [col for col in train.columns if '_bin' in col]
zero_list = []
one_list = []
for col in bin_col:
zero_list.append((train[col]==0).sum())
one_list.append((train[col]==1).sum())
trace1 = go.Bar(
x=bin_col,
y=zero_list ,
name='Zero count'
)
trace2 = go.Bar(
x=bin_col,
y=one_list,
name='One count'
)
data = [trace1, trace2]
layout = go.Layout(
barmode='stack',
title='Count of 1 and 0 in binary variables'
)
fig = go.Figure(data=data, layout=layout)
py.iplot(fig, filename='stacked-bar')