Random Forest는 다중 의사결정 트리의 예측 결과를 결합하여 정확성과 견고성을 향상시키는 앙상블 학습 알고리즘입니다. 랜덤 포레스트는 금융, 의료, 전자상거래 등 다양한 분야에서 널리 활용되고 있습니다.
이 기사에서는 Python을 사용하여 Random Forest 분류기를 구현하고 붓꽃 데이터 세트를 사용하여 테스트하는 방법을 소개합니다.
1. Iris 데이터 세트
Iris 데이터 세트는 150개의 레코드를 포함하며 각 레코드에는 4개의 기능과 1개의 카테고리 레이블이 있습니다. 4가지 특성은 꽃받침 길이, 꽃받침 너비, 꽃잎 길이, 꽃잎 너비이며, 카테고리 라벨은 붓꽃의 세 가지 품종(Iris Mountain, Iris Variable, Iris Virginia) 중 하나를 나타냅니다.
Python에서는 강력한 기계 학습 라이브러리인 scikit-learn을 사용하여 붓꽃 데이터 세트를 로드할 수 있습니다. 구체적인 작업은 다음과 같습니다:
from sklearn.datasets import load_iris iris = load_iris() X = iris.data y = iris.target
2. 랜덤 포레스트 분류기 구축
scikit-learn을 사용하여 랜덤 포레스트 분류기를 구축하는 것은 매우 간단합니다. 먼저 sklearn.ensemble에서 RandomForestClassifier 클래스를 가져와 객체를 인스턴스화해야 합니다.
from sklearn.ensemble import RandomForestClassifier rfc = RandomForestClassifier(n_estimators=10)
그 중 n_estimators 매개변수는 Random Forest에 포함된 의사결정 트리의 수를 지정합니다. 여기서는 랜덤 포레스트의 의사결정 트리 수를 10으로 설정했습니다.
다음으로 붓꽃 데이터 세트를 훈련 데이터와 테스트 데이터로 분할해야 합니다. train_test_split 함수를 사용하여 데이터 세트를 훈련 세트와 테스트 세트로 무작위로 나눕니다.
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
그중 test_size 매개변수는 테스트 세트의 비율을 지정하고,random_state 매개변수는 의사 난수 생성기의 시드를 지정합니다. 프로그램이 실행될 때마다 동일한 결과가 얻어지도록 보장합니다.
그런 다음 훈련 데이터를 사용하여 Random Forest 분류기를 훈련할 수 있습니다.
rfc.fit(X_train, y_train)
3. Random Forest 분류기를 테스트합니다.
분류기가 훈련되면 테스트 데이터를 사용하여 성능을 테스트할 수 있습니다. 예측 함수를 사용하여 테스트 세트에 대한 예측을 하고 Accuracy_score 함수를 사용하여 모델의 정확도를 계산합니다.
from sklearn.metrics import accuracy_score y_pred = rfc.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy)
마지막으로 matplotlib 라이브러리를 사용하여 분류기의 결정 경계를 시각화하여 분류기의 동작을 더 잘 이해할 수 있습니다. :
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5 y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5 z_min, z_max = X[:, 2].min() - .5, X[:, 2].max() + .5 xx, yy, zz = np.meshgrid(np.arange(x_min, x_max, 0.2), np.arange(y_min, y_max, 0.2), np.arange(z_min, z_max, 0.2)) fig = plt.figure() ax = fig.add_subplot(111, projection='3d') Z = rfc.predict(np.c_[xx.ravel(), yy.ravel(), zz.ravel()]) Z = Z.reshape(xx.shape) ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=y) ax.set_xlabel('Sepal length') ax.set_ylabel('Sepal width') ax.set_zlabel('Petal length') ax.set_title('Decision Boundary') ax.view_init(elev=30, azim=120) ax.plot_surface(xx, yy, zz, alpha=0.3, facecolors='blue') plt.show()
위의 코드는 데이터 포인트의 색상이 붓꽃 품종을 나타내고 결정 경계가 반투명 파란색 표면으로 표시되는 3차원 이미지를 생성합니다.
4. 요약
이 글에서는 Python을 사용하여 Random Forest 분류기를 구현하는 방법과 붓꽃 데이터 세트를 테스트에 사용하는 방법을 소개합니다. 랜덤 포레스트 알고리즘의 견고성과 정확성으로 인해 실제 응용 분야에서 광범위한 응용 가능성을 가지고 있습니다. 이 알고리즘에 관심이 있다면 더 많이 연습하고 관련 문헌을 읽어 보는 것이 좋습니다.
위 내용은 Python의 랜덤 포레스트 알고리즘 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!