① 지니 불순도는 부모 노드의 불순도와 자식 노드의 불순도의 차이로 계산합니다.
② 지니 불순도는 클래스의 비율을 제곱하여 모두 더한 다음 1에서 뺍니다.
③ 엔트로피 불순도는 1에서 가장 큰 클래스 비율을 빼서 계산합니다.
④ 엔트로피 불순도는 클래스 비율과 클래스 비율에 밑이 2인 로그를 적용한 값을 곱해서 모두 더한 후 음수로 바꾸어 계산합니다.
① importantvariables
② variableimportances
③ importantfeatures
④ featureimportances
dt = DecisionTreeClassifier(, random_state=42) # 코드를 완성해 보세요.
dt.fit(train_input, train_target)
print(dt.score(train_input, train_target))
print(dt.score(test_input, test_target))
plt.figure(figsize=(20,15))
plot_tree(dt, filled=True, feature_names=['alcohol', 'sugar', 'pH'])
plt.show()
<풀이>
지니 불순도 계산식 : 1 - (양성 클래스 비율^2 + 음성 클래스 비율^2)
엔트로피 불순도 계산식 : -음성 클래스 비율 x log_2(음성 클래스 비율) - 양성 클래스 비율 x log_2(양성 클래스 비율)
dt = DecisionTreeClassifier("min_impurity_decrease=0.0005", random_state=42)
dt.fit(train_input, train_target)
print(dt.score(train_input, train_target))
print(dt.score(test_input, test_target))
>>> 0.8874350586877044
0.8615384615384616
plt.figure(figsize=(20,15))
plot_tree(dt, filled=True, feature_names=['alcohol', 'sugar', 'pH'])
plt.show()
정리가 잘 된 글이네요. 도움이 됐습니다.