Python でのランダム フォレスト アルゴリズムの例

王林
リリース: 2023-06-10 13:12:07
オリジナル
3018 人が閲覧しました

Random Forest (ランダム フォレスト) は、複数の決定木の予測結果を組み合わせることで精度と堅牢性を向上させるアンサンブル学習 (アンサンブル学習) アルゴリズムです。ランダムフォレストは金融、医療、電子商取引など様々な分野で広く活用されています。

この記事では、Python を使用してランダム フォレスト分類器を実装し、iris データ セットを使用してテストする方法を紹介します。

1. Iris データセット

Iris データセットは、機械学習における古典的なデータ セットです。これには 150 のレコードが含まれており、各レコードには 4 つの特徴と 1 つのカテゴリ ラベルがあります。 4 つの特徴はがく片の長さ、がく片の幅、花弁の長さ、花びらの幅であり、カテゴリ ラベルはアイリスの 3 つの品種 (アイリス マウンテン、アイリス バーシカラー、アイリス バージニア) のいずれかを表します。

Python では、強力な機械学習ライブラリである scikit-learn を使用して、iris データ セットをロードできます。具体的な操作は次のとおりです。

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 パラメーターは、ランダム フォレストに含まれるデシジョン ツリーの数を指定します。ここでは、ランダム フォレスト内の決定木の数を 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 パラメーターは擬似セットのシードを指定します。 - プログラムを実行するたびに同じ結果が得られるようにするための乱数ジェネレーター。

その後、トレーニング データを使用してランダム フォレスト分類器をトレーニングできます:

rfc.fit(X_train, y_train)
ログイン後にコピー

3. ランダム フォレスト分類器をテストします

分類器がトレーニングされたら、次を使用できます。パフォーマンスをテストするためのテストデータ。予測関数を使用してテスト セットの予測を行い、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 を使用してランダム フォレスト分類器を実装し、テストに iris データ セットを使用する方法を紹介します。ランダム フォレスト アルゴリズムの堅牢性と精度により、実用的なアプリケーションでの幅広い応用の可能性があります。このアルゴリズムに興味がある場合は、さらに練習し、関連する文献を読むことをお勧めします。

以上がPython でのランダム フォレスト アルゴリズムの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート