Python을 이용한 Decision Tree (3)
DT Assignment1
주의사항
본인이 구현한 함수임을 증명하기 위해 주석 꼼꼼히 달아주세요.
이 데이터셋 뿐만 아니라 변수의 class가 더 많은 데이터에도 상관없이 적용 가능하도록 함수를 구현해 주세요.
변수의 class가 3개를 넘는 경우 모든 이진분류 경우의 수를 따져 보아야 합니다.
Hint) itertools 라이브러리의 combination 함수 & isin 함수 등이 활용될 수 있으며 이 밖에도 본인의 방법대로 마음껏 구현해주세요.
함수에 들어가는 변수나 flow 등은 본인이 변경해도 무관하며 결과만 똑같이 나오면 됩니다.
우수과제 선정이유
코드 한줄한줄 주석을 굉장히 자세하게 정성스레 적어주셔서 다른 분들이 참고하기 좋기 때문에 우수과제로 선정되었습니다.
Data Loading
In [1]:
import pandas as pd
import numpy as npIn [2]:
pd_data = pd.read_csv('https://raw.githubusercontent.com/AugustLONG/ML01/master/01decisiontree/AllElectronics.csv')
pd_data.drop("RID",axis=1, inplace = True) #RID는 그냥 순서라서 삭제In [3]:
Out[3]:
age
income
student
credit_rating
class_buys_computer
0
youth
high
no
fair
no
1
youth
high
no
excellent
no
2
middle_aged
high
no
fair
yes
3
senior
medium
no
fair
yes
4
senior
low
yes
fair
yes
5
senior
low
yes
excellent
no
6
middle_aged
low
yes
excellent
yes
7
youth
medium
no
fair
no
8
youth
low
yes
fair
yes
9
senior
medium
yes
fair
yes
10
youth
medium
yes
excellent
yes
11
middle_aged
medium
no
excellent
yes
12
middle_aged
high
yes
fair
yes
13
senior
medium
no
excellent
no
1. Gini 계수를 구하는 함수 만들기
Input: df(데이터), label(타겟변수명)
해당 결과는 아래와 같이 나와야 합니다.
In [4]:
In [5]:
Out[5]:
2. Feature의 Class를 이진 분류로 만들기
ex) {A,B,C} -> ({A}, {B,C}), ({B}, {A,C}), ({C}, {A,B})
Input: df(데이터), attribute(Gini index를 구하고자 하는 변수명)
해당 결과는 아래와 같이 나와야 합니다.
In [6]:
In [7]:
Out[7]:
3. 다음은 모든 이진분류의 경우의 Gini index를 구하는 함수 만들기
위에서 완성한 두 함수를 사용하여 만들어주세요!
해당 결과는 아래와 같이 나와야 합니다.
결과로 나온 Dictionary의 Key 값은 해당 class 들로 이루어진 tuple 형태로 들어가 있습니다.
In [8]:
In [9]:
Out[9]:
여기서 가장 작은 Gini index값을 가지는 class를 기준으로 split해야겠죠?
결과를 확인해보도록 하겠습니다.In [10]:
다음의 문제를 위에서 작성한 함수를 통해 구한 값으로 보여주세요!
문제1) 변수 ‘income’의 이진분류 결과를 보여주세요.
문제2) 분류를 하는 데 가장 중요한 변수를 선정하고, 해당 변수의 Gini index를 제시해주세요.
문제3) 문제 2에서 제시한 feature로 DataFrame을 split한 후 나눠진 2개의 DataFrame에서 각각 다음으로 중요한 변수를 선정하고 해당 변수의 Gini index를 제시해주세요.
In [11]:
Out[11]:
In [12]:
Out[12]:
In [13]:
In [14]:
Out[14]:
In [15]:
In [16]:
Out[16]:
In [17]:
In [18]:
Out[18]:
In [19]:
In [ ]:
In [20]:
In [21]:
Out[21]:
In [22]:
In [23]:
Out[23]:
In [24]:
In [25]:
Out[25]:
In [26]:
In [28]:
Out[28]:
Last updated
Was this helpful?