#!/usr/bin/env python # coding: utf-8 # ### Assignment. 자동차 평가 데이터에 대한 EDA 및 Decision Tree를 활용한 예측 # - 데이터 집합 소스 # - 설명: http://archive.ics.uci.edu/ml/datasets/Car+Evaluation # - Features # - buying (자동차 가격): vhigh, high, med, low. # - maint (유지보수 가격): vhigh, high, med, low. # - doors (자동차 문의 개수): 2, 3, 4, 5more. # - persons (자동차 안에 탈 수 있는 사람 인원): 2, 4, more. # - lug_boot (짐트렁크 크기): small, med, big. # - safety (안전도): low, med, high. # - Target # - eval (평가만족도): unacc, acc, good, vgood # - 모든 Attributes들을 Categorical 데이터로 취급해도 됨 # - 데이터: http://archive.ics.uci.edu/ml/machine-learning-databases/car/car.data # In[1]: import urllib2 from scipy import stats from pandas import Series, DataFrame import pandas as pd import matplotlib.pyplot as plt import numpy as np get_ipython().run_line_magic('matplotlib', 'inline') path = 'http://archive.ics.uci.edu/ml/machine-learning-databases/car/car.data' raw_csv = urllib2.urlopen(path) feature_names = ('buying', 'maint', 'doors', 'persons', "log_boot", "safety") target_name = 'eval' all_names = feature_names + (target_name,) df = pd.read_csv(raw_csv, names=all_names) # In[2]: dfb # ### [Mission 1] 모든 속성들을 수치형 데이터로 변환 # - Mushroom 데이터 집합에 대한 "Categorical Attribute를 Numerical Attribute로 변환" 강의 내용 참조 # - 최종적으로 DataFrame.describe() 함수를 통하여 각 속성별로 기본 통계치를 산출 # ### [Mission 2] Target 4개별로 그룹핑하여 각 속성별 기본 통계치 및 Box Plot 산출 # - Mushromm 데이터 집합에 대한 "Edible Mushrooms과 Poisonous Mushrooms 의 두 개의 그룹핑 작업 및 각 그룹별 Boxplot 그리기" 강의 내용 참조 # ### [Mission 3] 각 속성들을 두 개씩 쌍을 지어서 각 쌍마다 Scatter Plot 그리기 # - Iris 데이터 집합에 대한 "탐색적 자료 분석 (Exploratory data analysis)" 강의 내용 참조 # - 총 6개의 Feature가 존재하므로 두 개씩 쌍을 만든다면 총 15개의 쌍이 나옴 # - 예. (buying, maint), (buying, doors), ... # - Categorical Data를 Numerical Attribute로 변환한 DataFrame으로 작업해야 함 # - 그러므로, 총 15개의 Scatter Plot을 산출해야 함 # - 15개의 Scatter Plot을 눈으로 분석하여 Guess 할 수 있는 분석 내용을 작성 # ### [Mission 4] 전체 데이터 집합에 대한 Entropy 산출 # - Binary Target 이 아닌 4개의 Target 이 존재함을 유의해야 함 # ### [Mission 5] Decision Tree 모델 구축을 고려하여 루트노드에서 첫번째 Branch를 위한 IG가 가장 높은 속성 산출 # - 해당 속성을 잘 기억하고 Mission 6에서의 결과와 동일한지 확인해야 함 # ### [Mission 6] sklearn 모듈을 활용하여 Decision Tree 모델을 구축하고 예측 시도 # - 루트노드에서 첫번째 Branch를 구성할 때 활용한 속성이 Mission 5에서 산출한 것과 동일한지 파악 # - 해당 속성에 대하여 sklearn 모듈 내에서 어떠한 방법으로 기준을 정했는지 판단 및 해석 # - 모델 구축 후 기존 Training Data중 일부에 대한 예측 # - 기존 Training Data에 존재하지 않는 새로운 데이터에 대한 예측