Python의 랜덤 포레스트 알고리즘 예

王林
풀어 주다: 2023-06-10 13:12:07
원래의
2922명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!