어쩌다 알게된 꿀팁

핸즈온 머신러닝 2장 정리중

수다밀다_sudamilda 2021. 1. 16. 04:01
728x90

캘리포니아 주택중간가격은

레이블된 훈련샘플(답이 있는 문제)이므로 지도학습

예측할 문제가 여러개이므로 다중회귀

구역마다 하나의 값이므로 단변량회귀

 

평균제곱근 오차 RMSE

 

평균 절대 오차 MAE

 


github.com/rickiepark/handson-ml2

 

rickiepark/handson-ml2

핸즈온 머신러닝 2/E의 주피터 노트북. Contribute to rickiepark/handson-ml2 development by creating an account on GitHub.

github.com

에서 코드예제를 따라함


데이터는 CSV파일

 

import os
import tarfile
import urllib.request

DOWNLOAD_ROOT = "https://raw.githubusercontent.com/rickiepark/handson-ml2/master/"
HOUSING_PATH = os.path.join("datasets", "housing")
HOUSING_URL = DOWNLOAD_ROOT + "datasets/housing/housing.tgz"

def fetch_housing_data(housing_url=HOUSING_URL, housing_path=HOUSING_PATH):
    if not os.path.isdir(housing_path):
        os.makedirs(housing_path)
    tgz_path = os.path.join(housing_path, "housing.tgz")
    urllib.request.urlretrieve(housing_url, tgz_path)
    housing_tgz = tarfile.open(tgz_path)
    housing_tgz.extractall(path=housing_path)
    housing_tgz.close()

데이터를 추출하는 함수

fetch_housing_data()를 호출하면 

datasets/housing 디렉터리에 housing.tgz파일 다운받고 압축푼다

 

판다스를 사용해 데이터를 읽어들이는 함수

import pandas as pd

def load_housing_data(housing_path=HOUSING_PATH):
    csv_path = os.path.join(housing_path, "housing.csv")
    return pd.read_csv(csv_path)

head() 는 처음 다섯 행

housing = load_housing_data()
housing.head()
longitude	latitude	housing_median_age	total_rooms	total_bedrooms	population	households	median_income	median_house_value	ocean_proximity
0	-122.23	37.88	41.0	880.0	129.0	322.0	126.0	8.3252	452600.0	NEAR BAY
1	-122.22	37.86	21.0	7099.0	1106.0	2401.0	1138.0	8.3014	358500.0	NEAR BAY
2	-122.24	37.85	52.0	1467.0	190.0	496.0	177.0	7.2574	352100.0	NEAR BAY
3	-122.25	37.85	52.0	1274.0	235.0	558.0	219.0	5.6431	341300.0	NEAR BAY
4	-122.25	37.85	52.0	1627.0	280.0	565.0	259.0	3.8462	342200.0	NEAR BAY

각 행은 하나의 구역 위도, 경도, 중간가격, 방갯수 등등 10개

 

info() 는 데이터의 간단한 설명, 전체 행 수 데이터타입, null아닌 갯수

housing.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 20640 entries, 0 to 20639
Data columns (total 10 columns):
longitude             20640 non-null float64
latitude              20640 non-null float64
housing_median_age    20640 non-null float64
total_rooms           20640 non-null float64
total_bedrooms        20433 non-null float64
population            20640 non-null float64
households            20640 non-null float64
median_income         20640 non-null float64
median_house_value    20640 non-null float64
ocean_proximity       20640 non-null object
dtypes: float64(9), object(1)
memory usage: 1.6+ MB

분석: 20640개의 샘플이고 total_bedrooms만 20433개. 207은 null

ocean_proximity는 숫자아니고 텍스트형

 

value_counts() 로 각 카테고리와 얼마나 많은게 있는지 확인

housing["ocean_proximity"].value_counts()
<1H OCEAN     9136
INLAND        6551
NEAR OCEAN    2658
NEAR BAY      2290
ISLAND           5
Name: ocean_proximity, dtype: int64

ocean_proximity가 각각 5개의 부분으로 되어있음 각각 몇갠지 보여주는거임

 

 

728x90