포레스트가 작동하는 이유
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 42번째.
포리스트의 트리들은 의도적으로 서로 다릅니다. 각 트리는 부트스트랩 샘플로 학습합니다. 행을 복원 추출 방식으로 무작위로 뽑기 때문에, 어떤 행은 반복해서 뽑히고 어떤 행은 선택되지 않습니다.
각 질문도 몇 가지 특성을 무작위로 선택합니다. 트리마다 서로 다른 실수를 하고, 투표로 그 실수들이 상쇄됩니다. 두 종의 반딧불이:
숲은 대부분의 나무가 동의하는 곳에만 띠를 유지합니다.
트리들은 forest.estimators_에 들어 있습니다:
third = forest.estimators_[2]
print(round(third.score(X_test, y_test), 3))이 값은 0.737을 출력합니다. 전체 포리스트의 점수는 0.895입니다.
챌린지
중급숲은 자신의 나무들을 이길까요? 시작 코드는 forest를 riders.csv에 맞추고, 160 km 라이딩을 6시간 이내에 완주했거나 완주하지 못한 라이더들을 사용하며, 차트를 설정합니다.
- 테스트 행에서 숲의 모든 나무를 평가합니다.
- 점수를 히스토그램으로 나타내고,
bins=10을 사용한 뒤, 빨간색 세로선으로forest_acc를 표시합니다. - 숲이 이기는 나무의 수를 출력합니다.
다른 라이딩에서는 The forest beats 88 of its 100 trees가 출력되었고 다음과 같은 그래프가 그려졌습니다.
그런 다음 Coddy가 여러분의 차트를 설명합니다.
직접 해보기
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
# 160 km 자선 자전거 행사 참가자: 6시간 이내 완주 (1) 또는 미완주 (0)
riders = pd.read_csv("riders.csv")
features = ["weekly_km", "long_ride_km", "age", "years_riding", "rest_days", "sleep_hours"]
X = riders[features].to_numpy() # 포레스트의 트리들이 기대하는 형식인 일반 배열
y = riders["under_6h"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
forest_acc = forest.score(X_test, y_test)
fig, ax = plt.subplots()
ax.set_title("The Forest and Its Trees")
ax.set_xlabel("Test accuracy")
ax.set_ylabel("Trees")
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러