특성 중요도
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 30번째.
트리는 어떤 특성에 의존할까요? feature_importances_는 트리의 질문들이 수행한 분할에서 각 특성이 차지하는 비중을 알려 주며, 비중의 합은 1입니다:
Series로 정렬하면 순위가 매겨진 차트가 됩니다. ax.barh는 막대를 가로로 그리므로 긴 이름도 잘 들어갑니다:
imp = pd.Series(tree.feature_importances_, index=iris.feature_names).sort_values()
ax.barh(imp.index, imp.values)0은 트리가 해당 특성에 대해 한 번도 묻지 않았다는 뜻입니다. 꽃받침도 여전히 중요할 수 있습니다. 꽃잎이 이미 트리에게 그 특성이 어떤지 알려 주었기 때문입니다.
챌린지
중급서핑 학교는 초보자가 첫 주에 보드 위에 서게 되는 요인이 무엇인지 알고 싶어 합니다. 프로그램은 깊이를 읽고, 시작 코드는 그 깊이로 트리를 학습시키고 차트를 설정합니다.
- 특성별 중요도를 Series에 담고, 작은 값부터 정렬하세요.
- 가장 중요한 특성(소수점 3자리)과 한 번도 묻지 않은 특성을 아래와 같이 출력하세요.
- 가로 막대그래프로 그린 다음 표시하세요.
수영 학교의 경우:
Top feature: pool_hours (0.612)
Never asked: ['goggles']그런 다음 Coddy가 차트를 설명합니다. 그들의 차트는 다음과 같습니다.
직접 해보기
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
depth = int(input())
# 초보자 한 명당 한 행: standing의 1은 첫 주 안에 보드 위에 일어섰다는 뜻입니다
surf = pd.read_csv("surfschool.csv")
features = ["age", "fitness", "days_surfed", "skated_before", "lesson_hours", "wetsuit_fit"]
X_train, X_test, y_train, y_test = train_test_split(surf[features], surf["standing"], test_size=0.25, random_state=0)
tree = DecisionTreeClassifier(max_depth=depth, random_state=0)
tree.fit(X_train, y_train)
fig, ax = plt.subplots(layout="constrained") # 긴 이름을 표시할 공간을 남깁니다
ax.set_title("What Gets Beginners Standing?")
ax.set_xlabel("Importance")
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러