[KaggleStudy] Zillow EDA On Missing Values & Multicollinearity

이하얀·2024년 12월 21일
0

Notebook


데이터 타입 시각화

  • 수치로 간단히 확인하는 것에 익숙했는데, 시각화를 많이 하는 노트북으로 보였음.
    • 그렇지만, 빠른 분석을 위해서는 시각화보단 이정도는 수치 확인하고 넘어가야 하지 않을까..?
dataTypeDf = pd.DataFrame(merged.dtypes.value_counts()).reset_index().rename(columns={"index":"variableType", 0:"count"})
fig, ax = plt.subplots()
fig.set_size_inches(20,5)
sn.barplot(data=dataTypeDf, x="variableType", y="count", ax=ax, color="#34495e")
ax.set(xlabel="varialbe Type", ylabel="Count", title="Variable Count Across Datatype")


결측치 시각화

  • 결측치 비율을 시각화하는 코드
    • 이것도 수치로 표현하는 것이 조금 더 파악하기 좋을 것 같음
    • 정확히 어떤 결측치가 있는지 확인하는 데에는 조금 어려움이 있어 보임
    • 직관적으로 파악하기 좋은 정도
missingValueColumns = merged.columns[merged.isnull().any()].tolist()
msno.bar(merged[missingValueColumns], \
          figsize=(20,8), color="#34495e", fontsize=12, labels=True,)

msno.matrix(merged[missingValueColumns],width_ratios=(10,1),\
            figsize=(20,8),color=(0,0, 0),fontsize=12,sparkline=True,labels=True)

msno.heatmap(merged[missingValueColumns], figsize=(20,20))


Top Features Selection

  • TypeError: Expecting a sequence of strings for feature names, got: <class 'numpy.ndarray'>

    • 발생 구간 : dtrain = xgb.DMatrix(train_X, train_y, feature_names=train_X.columns.values)
  • 원인 분석

    • feature_names=train_X.columns.values 부분에서 넘파일 배열로 반환되지만, xgb에서는 리스트나 튜플로 반환해야함
  • 해결

    • list 형태로 변환해주면 됨
dtrain = xgb.DMatrix(train_X, train_y, feature_names=train_X.columns.values.tolist())

Correlation Analysis

  • ValueError: could not convert string to float: 'LARS'
    • merged[topFeatures]에 문자열 타입의 데이터가 포함되어 있음
corrMatt = merged[topFeatures].corr()
  • 숫자형 데이터만 선택
numMerged = merged[topFeatures].select_dtypes(include=['number'])
corrMatt = numMerged.corr()


ix ➡️ loc

  • AttributeError: 'Series' object has no attribute 'ix'

    • ix 속성 삭제됨
  • 이전 코드

merged["logerror"].ix[merged["logerror"] > ulimit] = ulimit
merged["logerror"].ix[merged["logerror"] < ulimit] = ulimit
  • 변경 코드
merged.loc[merged["logerror"] > ulimit, "logerror"] = ulimit
merged.loc[merged["logerror"] < llimit, "logerror"] = llimit

  • 이전 코드
    mergedFiltered[col].ix[mergedFiltered[col]>ulimit] = ulimit
    mergedFiltered[col].ix[mergedFiltered[col]<llimit] = llimit
  • 변경 코드
    mergedFiltered.loc[mergedFiltered[col] > ulimit, col] = ulimit
    mergedFiltered.loc[mergedFiltered[col] < llimit, col] = llimit

seaborn.jointplot() 함수에서 size 인자 사용 안됨

  • 이전 코드
sn.jointplot(x = mergedFiltered.calculatedfinishedsquarefeet.values,
             y = mergedFiltered.logerror.values,
             size = 10,
  • 변경 코드
sn.jointplot(x=mergedFiltered.calculatedfinishedsquarefeet.values,
             y=mergedFiltered.logerror.values,
             height=10,


Axes3D

  • 이미지 출력이 안되는 문제 발생
    • pylab 부분을 plt로 변경
fig = plt.figure(figsize=(20, 10))
ax = fig.add_subplot(111, projection='3d')

profile
언젠가 내 코드로 세상에 기여할 수 있도록, BE&Data Science 개발 기록 노트☘️

0개의 댓글