다운로드
작성자: admin 작성일시: 2016-05-30 01:38:08 조회수: 9769 다운로드: 480
카테고리: 머신 러닝 태그목록:

회귀 분석용 예제 데이터 소개

scikit-learn이 제공하는 회귀 분석용 예제 데이터에 대해 소개한다. 먼저, 보스턴 주택 가격 데이터는 다음과 같이 구성되어 있다.

  • 타겟 데이터
    • 1978 보스턴 주택 가격
    • 506개 타운의 주택 가격 중앙값 (단위 1,000 달러)
  • 특징 데이터
    • CRIM: 범죄율
    • INDUS: 비소매상업지역 면적 비율
    • NOX: 일산화질소 농도
    • RM: 주택당 방 수
    • LSTAT: 인구 중 하위 계층 비율
    • B: 인구 중 흑인 비율
    • PTRATIO: 학생/교사 비율
    • ZN: 25,000 평방피트를 초과 거주지역 비율
    • CHAS: 찰스강의 경계에 위치한 경우는 1, 아니면 0
    • AGE: 1940년 이전에 건축된 주택의 비율
    • RAD: 방사형 고속도로까지의 거리
    • DIS: 직업센터의 거리
    • TAX: 재산세율

load_boston() 명령으로 로드하고 DESCR 속성으로 문서 설명을 볼 수 있다.

In [1]:
from sklearn.datasets import load_boston
boston = load_boston()
print(boston.DESCR)
.. _boston_dataset:

Boston house prices dataset
---------------------------

**Data Set Characteristics:**  

    :Number of Instances: 506 

    :Number of Attributes: 13 numeric/categorical predictive. Median Value (attribute 14) is usually the target.

    :Attribute Information (in order):
        - CRIM     per capita crime rate by town
        - ZN       proportion of residential land zoned for lots over 25,000 sq.ft.
        - INDUS    proportion of non-retail business acres per town
        - CHAS     Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)
        - NOX      nitric oxides concentration (parts per 10 million)
        - RM       average number of rooms per dwelling
        - AGE      proportion of owner-occupied units built prior to 1940
        - DIS      weighted distances to five Boston employment centres
        - RAD      index of accessibility to radial highways
        - TAX      full-value property-tax rate per $10,000
        - PTRATIO  pupil-teacher ratio by town
        - B        1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town
        - LSTAT    % lower status of the population
        - MEDV     Median value of owner-occupied homes in $1000's

    :Missing Attribute Values: None

    :Creator: Harrison, D. and Rubinfeld, D.L.

This is a copy of UCI ML housing dataset.
https://archive.ics.uci.edu/ml/machine-learning-databases/housing/


This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.

The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic
prices and the demand for clean air', J. Environ. Economics & Management,
vol.5, 81-102, 1978.   Used in Belsley, Kuh & Welsch, 'Regression diagnostics
...', Wiley, 1980.   N.B. Various transformations are used in the table on
pages 244-261 of the latter.

The Boston house-price data has been used in many machine learning papers that address regression
problems.   
     
.. topic:: References

   - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.
   - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.

데이터는 후속 작업을 위해 Pandas 데이터프레임 형태로 만들어 둔다. 여기에서는 특징 행렬을 dfX로, 종속 변수 벡터를 dfy로 만들었다. statsmodels에서 작업하려면 특징 행렬과 종속 변수를 하나의 데이터프레임으로 만들어 두는 것이 편리하므로 concat 명령을 사용하여 df라는 하나의 데이터프레임을 만든다.

In [2]:
dfX = pd.DataFrame(boston.data, columns=boston.feature_names)
dfy = pd.DataFrame(boston.target, columns=["MEDV"])
df = pd.concat([dfX, dfy], axis=1)
df.tail()
Out:
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT MEDV
501 0.06263 0.0 11.93 0.0 0.573 6.593 69.1 2.4786 1.0 273.0 21.0 391.99 9.67 22.4
502 0.04527 0.0 11.93 0.0 0.573 6.120 76.7 2.2875 1.0 273.0 21.0 396.90 9.08 20.6
503 0.06076 0.0 11.93 0.0 0.573 6.976 91.0 2.1675 1.0 273.0 21.0 396.90 5.64 23.9
504 0.10959 0.0 11.93 0.0 0.573 6.794 89.3 2.3889 1.0 273.0 21.0 393.45 6.48 22.0
505 0.04741 0.0 11.93 0.0 0.573 6.030 80.8 2.5050 1.0 273.0 21.0 396.90 7.88 11.9

데이터프레임을 만든 후에는 데이터에 대한 사전 조사를 한다. 주로 다음과 같은 점에 유의한다.

  • 데이터에 누락된 값이 있는지 확인
  • 각 데이터가 연속적인 실수값인지 범주형 값인지 확인
  • 실수형 데이터의 분포가 정규 분포인지 확인
  • 실수형 데이터에 양수 혹은 범위 등으로 제한 조건이 있는지 확인
  • 범주형 데이터의 경우 범주의 값이 어떤 값 혹은 숫자로 표현되어 있는지 확인
  • 데이터간의 상관관계를 확인
  • 데이터에 이상한 값(outlier)들이 있는지 확인

보스턴 데이터의 경우 0과 1로 표현된 CHAS 데이터를 제외하고는 가격을 포함한 대부분의 데이터가 양수인 실수이다. seaborn의 pairplot 명령으로 각 데이터의 분포와 데이터들간의 상관관계를 파악한다. 다음 그림에는 일부 데이터만을 보였으나 이 그림만으로도 가격(MEDV)과 RM 데이터가 강한 양의 상관관계를 가지는 것을 볼 수 있다. 또한 스캐터플롯상으로 볼 때는 AGERAD 데이터는 가격과 음의 상관관계를 가지는 것처럼 보인다. 실제로 이러한 관계가 있는지 이후의 분석과정에서 더 자세히 알아본다.

In [3]:
cols = ["MEDV", "RM", "AGE", "RAD"]
sns.pairplot(df[cols])
plt.show()

캘리포니아 주택 가격 데이터

  • 타겟 데이터

    • 1990년 캘리포니아의 각 행정 구역 내 주택 가격의 중앙값
  • 특징 데이터

    • MedInc : 행정 구역 내 소득의 중앙값
    • HouseAge : 행정 구역 내 주택 연식의 중앙값
    • AveRooms : 평균 방 갯수
    • AveBedrms : 평균 침실 갯수
    • Population : 행정 구역 내 인구 수
    • AveOccup : 평균 자가 비율
    • Latitude : 해당 행정 구역의 위도
    • Longitude : 해당 행정 구역의 경도
In [4]:
from sklearn.datasets import fetch_california_housing

california = fetch_california_housing()
print(california.DESCR)
.. _california_housing_dataset:

California Housing dataset
--------------------------

**Data Set Characteristics:**

    :Number of Instances: 20640

    :Number of Attributes: 8 numeric, predictive attributes and the target

    :Attribute Information:
        - MedInc        median income in block
        - HouseAge      median house age in block
        - AveRooms      average number of rooms
        - AveBedrms     average number of bedrooms
        - Population    block population
        - AveOccup      average house occupancy
        - Latitude      house block latitude
        - Longitude     house block longitude

    :Missing Attribute Values: None

This dataset was obtained from the StatLib repository.
http://lib.stat.cmu.edu/datasets/

The target variable is the median house value for California districts.

This dataset was derived from the 1990 U.S. census, using one row per census
block group. A block group is the smallest geographical unit for which the U.S.
Census Bureau publishes sample data (a block group typically has a population
of 600 to 3,000 people).

It can be downloaded/loaded using the
:func:`sklearn.datasets.fetch_california_housing` function.

.. topic:: References

    - Pace, R. Kelley and Ronald Barry, Sparse Spatial Autoregressions,
      Statistics and Probability Letters, 33 (1997) 291-297

In [5]:
df = pd.DataFrame(california.data, columns=california.feature_names)
df["Target"] = california.target
df.tail()
Out:
MedInc HouseAge AveRooms AveBedrms Population AveOccup Latitude Longitude Target
20635 1.5603 25.0 5.045455 1.133333 845.0 2.560606 39.48 -121.09 0.781
20636 2.5568 18.0 6.114035 1.315789 356.0 3.122807 39.49 -121.21 0.771
20637 1.7000 17.0 5.205543 1.120092 1007.0 2.325635 39.43 -121.22 0.923
20638 1.8672 18.0 5.329513 1.171920 741.0 2.123209 39.43 -121.32 0.847
20639 2.3886 16.0 5.254717 1.162264 1387.0 2.616981 39.37 -121.24 0.894
In [6]:
cols = ["Target", "MedInc", "AveRooms", "AveBedrms"]
sns.pairplot(df[cols].sample(1000))
plt.show()