import os
import tarfile
import urllib
import pandas as pd

 

housing = pd.read_csv('./housing.csv')
housing

 

결측치 확인 

housing.info()

 

ocean_proximity가 어떤 카테고리가 있고, 각 카테고리마다 얼마나 많은 구역 있는지 확인

housing["ocean_proximity"].value_counts()

 

bescribe()

  • 널 값 제외.
  • 숫자형 특성의 요약 정보 보여줌
  • std : 값이 퍼져 있는 정보 측정 (표준 편차)
  • 백분위 수
    • latitude의 25%는 33.93보다 작음
housing.describe()

 

히스토그램 그려보기

%matplotlib inline
import matplotlib.pyplot as plt
housing.hist(bins = 50, figsize = (20,15))
plt.show()
  • %matplotlib : 맷플롯립이 주피터 자체의 백엔드 사용하게 

 

테스트 세트 만들어보기

from zlib import crc32
def test_set_check(identifier, test_ratio):
    return crc32(np.int64(identifier)) & 0xffffffff < test_ratio * 2**32
def split_train_test_by_id(data, test_ratio, id_column):
    ids = data[id_column]
    in_test_set = ids.apply(lambda id_ : test_set_check(id, test_ratio))
    return data.loc[~in_test_set], data.loc[in_test_set]
housing_with_id = housing.reset_index()

train_set, test_set = split_train_test_by_id(housing_with_id, 0.2, "index")

→ 해시값을 계산하여 해시 최대값의 20%보다 작거나 같은 샘플만 테스트 세트로 보낼 수 있음

 

사이킷런 

train_test_split

  • 난수 초깃값을 지정 가능 - random_state
  • 행의 개수가 같은 여러 개의 데이터셋을 넘겨서 같은 인덱스를 기반으로 나누기 가능 
from sklearn.model_selection import train_test_split
train_set, test_set = train_test_split(housing, test_size = 0.2, random_state = 42)

 

계층적 샘플링

  • 카테고리 5개 가진 소득 카테고리 특성
  • bin - 카테고리 범위
  • housing["income_cat"] = pd.cut(housing["median_income"],
                                  bins = [0.,1.5,3.0,4.5,6.,np.inf],
                                  labels = [1,2,3,4,5])

 

'Hand-On Machine Learning' 카테고리의 다른 글

[9장] 비지도 학습_가우시안 혼합  (0) 2021.07.27

+ Recent posts