Data/Dacon

μ§‘ κ°’ 예츑 뢄석...1

Kirok Kim 2022. 2. 3. 20:34
λͺ…λͺ©ν˜• 데이터 λ³€ν™˜ 및 히트맡의 μžμ„Έν•œ λ‚΄μš©μ€ 3μž₯μ—μ„œ λ‹€λ£° μ˜ˆμ •
μŠ΅μž‘(연ꡬ쀑)
!pip install pandas
!pip install numpy
!pip install matplotlib
!pip install seaborn
!pip install sklearn

import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import LabelEncoder
# 1. train.csv : ν•™μŠ΅ 데이터
# id : 데이터 고유 id
# OverallQual : μ „λ°˜μ  μž¬λ£Œμ™€ 마감 ν’ˆμ§ˆ
# YearBuilt : 완곡 연도
# YearRemodAdd : 리λͺ¨λΈλ§ 연도
# ExterQual : μ™Έκ΄€ 재료 ν’ˆμ§ˆ
# BsmtQual : μ§€ν•˜μ‹€ 높이
# TotalBsmtSF : μ§€ν•˜μ‹€ 면적 
# 1stFlrSF : 1측 면적 
# GrLivArea : 지상측 μƒν™œ 면적
# FullBath : 지상측 ν™”μž₯μ‹€ 개수 
# KitchenQual : λΆ€μ–΅ ν’ˆμ§ˆ 
# GarageYrBlt : μ°¨κ³  완곡 연도
# GarageCars: 차고 자리 개수
# GarageArea: 차고 면적 
# target : μ§‘κ°’(λ‹¬λŸ¬ λ‹¨μœ„)

data=pd.read_csv('/content/drive/MyDrive/μ§‘κ°’μ˜ˆμΈ‘λΆ„μ„/train.csv')

data.drop('id',axis=1,inplace=True)

data

# 데이터λ₯Ό κ°€μ Έμ˜¨ λ’€ 결츑치 확인은 ν•„μˆ˜λ‹€
def check(data):
    mcol = []
    for col in data.columns:
        mv = sum(data[col].isna())
        is_missing = True if mv >= 1 else False
        if is_missing:
            print(f'κ²°μΈ‘ {col}')
            print(f'{mv} 개')
            mcol.append([col, data[col].dtype])
    if mcol == []:
        print('x')
    return mcol

mcol = check(data)

data.describe()

data.info()

# λ¨Όμ € μƒκ΄€κ³„μˆ˜ 계산을 μœ„ν•΄ ν…μŠ€νŠΈ ν˜•μ‹μ˜ 데이터λ₯Ό 숫자둜 λ³€ν™˜ν•΄μ€Œ.
from sklearn.preprocessing import LabelEncoder

corr_df = data.copy()
corr_df[corr_df.columns[corr_df.dtypes=='O']] = corr_df[corr_df.columns[corr_df.dtypes=='O']].astype(str).apply(LabelEncoder().fit_transform)
corr_df['Exter Qual']
## 상관관계λ₯Ό 뢄석해보면 λ°˜λΉ„λ‘€μ  μš”μ†Œκ°€ 많음 
이 뢀뢄은 sklearn을 톡해 μ œλŒ€λ‘œ 된 μˆ˜μΉ˜ν™”κ°€ 이루어지지 μ•Šμ•˜λ‹€κ³  생각함.

 

#상관관계 뢄석도 이게 데이터 λΆ„μ„ν•˜λŠ”λ°μ— 제일 μœ μš©ν•œ μ‹œκ°ν™”κ°€ μ•„λ‹Œκ°€ μ‹Άλ‹€
plt.figure(figsize=(15,10))

heat_table = corr_df.corr()
mask = np.zeros_like(heat_table)
mask[np.triu_indices_from(mask)] = True
heatmap_ax = sns.heatmap(heat_table, annot=True, mask = mask, cmap='coolwarm')
heatmap_ax.set_xticklabels(heatmap_ax.get_xticklabels(), fontsize=15, rotation=45)
 # κΈ€μž 기울이기 및 ν°νŠΈμ‚¬μ΄μ¦ˆ κ°λ„λŠ” λ°˜μ‹œκ³„ λ°©ν–₯
heatmap_ax.set_yticklabels(heatmap_ax.get_yticklabels(), fontsize=15)
plt.title('correlation between features', fontsize=40)
plt.show()

# sns.heatmap 에 λŒ€ν•œ μ „λ°˜μ μΈ 지식이 λΆ€μ‘± μ„œμΉ˜κ°€ ν•„μš”...

 

λ°˜μ‘ν˜•