머신러닝을 위한 데이터 가져오기
- UC Irvine 머신러닝 저장소 (http://archive.ics.uci.edu/ml/)
- Kaggle Dataset (http://www.kaggle.com/datasets)
- Amazon AWS Dataset (http://aws.amazon.com/ko/datasets
- Wiki Dic. (https://goo.gl/SJHN2k)
- Quora.com (http://goo.gl/zDR78y)
- Dataset Subreddit(http://www.reddit.com/r/datasets)
1. 데이터 가져오기
fetch_housing_data()를 호출하면 작업공간에 datasets/housing 디렉토리를 만들고 housing.tgz파일을 내려받고 같은 디렉토리에 압축을 풀어 housing.csv파일을 만듭니다.
import os
import tarfile
from six.moves import urllib
DOWNLOAD_ROOT = "https://github.com/ageron/handson-ml/tree/master/"
HOUSING_PATH = "datasets/housing"
HOUSING_URL = DOWNLOAD_ROOT + HOUSING_PATH + "/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()
2. 데이터셋 확인
이제 판다스를 사용하여 데이터를 읽어 들이도록 하겠습니다. 데이터를 읽어들이는 간단한 함수를 사용하도록 하겠습니다.
load_housing_data() 함수는 모든 데이터를 담은 판다스의 데이터프레임 객체를 반환합니다. head() 함수를 활용하여 정상적으로 데이터가 적재되었는지 확인합니다.
Code
import pandas as pd
HOUSING_PATH = "datasets/housing"
def load_housing_data(housing_path=HOUSING_PATH):
csv_path = os.path.join(housing_path, "housing.csv")
return pd.read_csv(csv_path)
housing = load_housing_data()
print(housing.head())
Output
정상적으로 데이터가 적재되었음을 확인할 수 있습니다. 위의 표에서는 5개의 열만 보이지만 실제로는 10개의 열이 존재합니다.
info() 함수를 통해 데이터에 대한 간략한 설명과 전체 행 수, 각 특성의 데이터 타입과 널이 아닌 값의 개수를 확인합니다.
Code
housing = load_housing_data()
print(housing.info())
Output
데이터셋에 20,640개의 샘플이 있습니다. 머신러닝 프로젝트치고는 상당히 작은 편이지만, 처음 시작하기에 적당한 크기입니다.
ocean_proximity 필드를 제외하고는 모두 숫자형(float64)임을 확인할 수 있습니다. ocean_proximity 필드의 데이터 타입이 object이므로 어떤 파이썬 객체도 될 수 있지만,
데이터를 CSV 파일에서 읽어 들였기 때문에 텍스트 특성일 것이라고 추측할 수 있습니다. 해당 열의 값이 반복적으로 나타나는 것으로 보아 범주형 변수임을 확인할 수 있습니다.
3. 데이터 필드 속성 확인
Code
housing = load_housing_data()
print(housing["ocean_proximity"].value_counts())
Output
4. 데이터 필드 시각화
Code
housing.hist(bins=50, figsize=(20, 15))
plt.show()
Output
출력된 히스토그램을 통해 여러 가지 정보들을 얻을 수 있고, 이로 인해 우리가 다룰 데이터를 많이 이해하게 되었습니다.
References
- 오렐리앙 제롱, '핸즈온 머신러닝', 한빛미디어, 2018
'Machine Learning > Basic Theory' 카테고리의 다른 글
[ML] 머신러닝 알고리즘을 위한 데이터 준비 (0) | 2018.08.31 |
---|---|
[ML] 머신러닝을 위한 테스트 세트 만들기 (2) | 2018.08.31 |
[ML] 좋은 알고리즘과 나쁜 알고리즘 (과소적합, 과대적합) (1) | 2018.08.14 |
[ML] 좋은 데이터와 나쁜 데이터 (0) | 2018.08.14 |
[ML] 머신러닝 시스템의 종류 (3) - 사례 기반 학습과 모델 기반 학습 (0) | 2018.08.14 |