트리 깊이
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 29번째.
트리는 모든 훈련 데이터 행이 각자의 답을 가질 때까지 계속 질문할 수 있습니다. 그러면 학습한 것이 아니라 외워버린 것입니다:
깊은 트리는 자체 학습 행의 잡음까지 학습하므로 테스트 정확도는 정점에 도달한 뒤 떨어집니다. 여러 깊이를 시도해 보세요:
train = []
test = []
for d in range(1, 13):
tree = DecisionTreeClassifier(max_depth=d, random_state=0)
tree.fit(X_train, y_train)
train.append(tree.score(X_train, y_train))
test.append(tree.score(X_test, y_test))이 달들에서는 깊이 6이 새 행에서 가장 좋은 성능을 보입니다. 지금은 그대로 두세요. 깊이 8부터는 트리가 기억한 행에서는 완벽하지만, 나머지 행에서는 성능이 더 나쁩니다.
챌린지
중급망원경 관측 조사에서는 천체를 별과 은하로 분류합니다. 시작 코드는 데이터를 나누고 차트를 설정합니다.
depths의 각 깊이에 대해 트리를 학습시키고(random_state=0) 두 정확도를 모두 저장하세요.- 아래와 같이 테스트 정확도가 가장 높은 깊이를 출력하세요.
- 두 선을
train과test로 표시해 그린 다음, 점선ax.axvline으로 최적 깊이를 표시하고 범례를 추가한 뒤 표시하세요.
망고 분류기의 경우:
Best depth: 5, test accuracy 0.867그러면 Coddy가 차트를 설명합니다. Coddy의 차트는 다음과 같습니다.
직접 해보기
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# 망원경 관측 자료에서 천체 하나당 한 행: galaxy에서 1은 은하, 0은 별을 뜻합니다
sky = pd.read_csv("sky.csv")
features = ["brightness_mag", "size_arcsec", "roundness", "color_index"]
X_train, X_test, y_train, y_test = train_test_split(sky[features], sky["galaxy"], test_size=0.25, random_state=0)
depths = range(1, 11)
fig, ax = plt.subplots()
ax.set_title("Star or Galaxy?")
ax.set_xlabel("Tree depth")
ax.set_ylabel("Accuracy")
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러