머신 러닝 프로젝트 시작하기-데이터 탐색
3. 데이터를 탐색합니다
순서
이 단계에서는 해당 분야의 전문가에게 조언을 구하세요.
- 데이터 탐색을 위해 복사본을 생성합니다(필요하면 샘플링하여 적절한 크기로 줄입니다).
- 데이터 탐색 결과를 저장하기 위해 주피터 노트북을 만듭니다.
- 각 특성의 특징을 조사합니다. - 이름 - 타입(범주형, 정수/부동소수, 최댓값/최솟값 유무, 텍스트, 구조적인 문자열 등) - 누락된 값의 비율(%) - 잡음 정도와 잡음의 종류(확률적, 이상치, 반올림 에러 등) - 이 작업에 유용한 정도 - 분포 형태(가우시안, 균등, 로그 등)
- 지도 학습 작업이라면 타깃 속성을 구분합니다.
- 데이터를 시각화합니다.
- 특성 간의 상관관계를 조사합니다.
- 수동으로 문제를 해결할 수 있는 방법을 찾아봅니다.
- 적용이 가능한 변환을 찾습니다.
- 추가로 유용한 데이터를 찾습니다(있다면 ‘데이터를 수집합니다’로 돌아갑니다)
- 조사한 것을 기록합니다.
데이터 시각화
Matplotlib를 사용하여 그래프를 그린다.
plot()
- alpha 옵션 데이터 포인트가 밀집된 영역을 잘 보여준다.
상관 관계
두 변수간에 어떤 선형적 관계를 갖고 있는 지를 분석하는 방법이다. 상관관계는 인과 관계를 의미하지는 않는다. 공분산을 이용하면 변수 간 상관관계를 알 수 있지만,변수 간 단위가 서로 다른 경우에는 비교하기 어렵기 때문에 상관 계수를 사용한다.
corr()
Pandas의 DataFrame 객체에서 적용되며, 각 특성간의 상관관계를 method에 따라 측정한 값을 출력해준다. 값은 -1에서 1사이이다. -1에 가까워질 수록 반비례로 관계가 강하게 있는 것이고, 1에 가까워질 수록 강한 비례관계를 가진다는 의미이다.
DataFrame.corr(method='pearson',min_periods=1)
parameters: method {'pearson','kendall','spearman'} or callable
corr_matrix = housing.corr()
corr_matrix["median_house_value"].sort_values(ascending=False)
scatter_matrix()
여러 개의 연속형 변수에 대해서 각 쌍을 이루어서 산점도를 구려 한꺼번에 변수 간 관계를 볼 수 있는 산점도 행렬이다. 이는 Pandas.plotting.scatter_matrix()와 seaborn.pairplot() 두 가지로 확인할 수 있다.
Draw a matrix of scatter plots.
pandas.plotting.scatter_matrix(frame, alpha=0.5, figsize=None, ax=None, grid=False, diagonal='hist', marker='.', density_kwds=None, hist_kwds=None, range_padding=0.05, **kwargs)
from pandas.plotting import scatter_matrix
attributes = ["median_house_value", "median_income", "total_rooms", "housing_median_age"]
scatter_matrix(housing[attributes], figsize=(12,8))
import seaborn as sns
sns.pairplot(housing[attributes],palette="pastel")
plt.show()
특성 조합
여러 특성의 조합을 시도해본다.
housing["rooms_per_household"] = housing["total_rooms"]/housing["households"]
housing["bedrooms_per_room"] = housing["total_bedrooms"] / housing["total_rooms"]
housing["population_per_household"] = housing["population"] / housing["households"]
corr_matrix = housing.corr()
corr_matrix["median_house_value"].sort_values(ascending=False)
데이터의 특성간의 관련이 있을 것 같은 특성을 조합하여 새로운 특성을 만들어 본다.