Python のランダム フォレスト技術とは何ですか?

WBOY
リリース: 2023-06-04 21:51:17
オリジナル
2225 人が閲覧しました

Python のランダム フォレスト手法とは何ですか?

ランダム フォレストは、分類や回帰などの問題に適用できる強力なアンサンブル学習アルゴリズムです。集団的な意思決定方法で精度と堅牢性を向上させるために、複数のデシジョン ツリーで構成されます。ランダム フォレストの構築に必要な Python ライブラリの依存関係には、scikit-learn (sklearn) を使用するランダム フォレスト パッケージが含まれます。

ランダムフォレストとは何ですか?

ランダム フォレストは、データセットでトレーニングすることによって出力変数の値を予測する教師あり学習モデルです。連続または離散出力変数を処理します。ランダム フォレストは複数のデシジョン ツリーで構成されます。変数と構築された分割点上の分割点をランダムに選択します。

ランダム フォレストの利点は何ですか?

ランダム フォレストには、現代のデータ サイエンスで最も人気のある予測手法の 1 つとなっている重要な利点がいくつかあります。

  1. 高精度: ランダム フォレストは、多くの場合、他の機械学習手法よりも優れています。アルゴリズムの精度が高くなります。データの欠落や不確実性の処理に優れています。
  2. 大規模なデータ セットに最適: ランダム フォレストは、システム リソースをより効率的に消費する自然なアンサンブル構造を備えているため、大規模なデータ サイエンスの問題に対して非常にうまく拡張できます。
  3. 複数の変数タイプを処理可能: ランダム フォレストはデータ タイプや変数タイプに制限されません。
  4. 特徴の重要性を判断できる: ランダム フォレストは、データ セット内の各変数がモデルに与える影響を測定し、変数の重要性に基づいてデータ内の最も顕著な傾向とパターンを推測できます。

Python を使用してランダム フォレストを実装するにはどうすればよいですか?

ランダム フォレストの実装には、Python ライブラリ scikit-learn (sklearn) のインストールが必要です。インストール手順は次のとおりです。

pip install scikit-learn
ログイン後にコピー

インストール後、sklearn ライブラリによって提供される API を使用して、ランダム フォレストを実装できます。

この前に、必要なライブラリをロードする必要があります:

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
ログイン後にコピー

一般的に、ランダム フォレスト モデルをトレーニングし、それを予測に使用するには、次の 4 つの手順を実行できます。

  1. データのロード

このコード例では、scikit-learn の組み込み Iris データセットを使用します。

def load_data():
    data = load_iris()
    return data.data, data.target
ログイン後にコピー
  1. モデルを構築します
#このステップでは、RandomForestClassifier クラスを使用してランダム フォレスト分類器を構築します。

n_estimatorsこのパラメーターはフォレスト内の木の数を定義します。各木はランダムなサンプルと変数を使用してトレーニングされます。選択する推奨されるツリーの数は、特定の問題のサイズによって異なります。この数を超えるとトレーニング時間が長くなり、ツリーが少なすぎるとモデルが過学習になる可能性があります:

def create_model():
    model = RandomForestClassifier(n_estimators=100,
                                   max_depth=3,
                                   random_state=0)
    return model
ログイン後にコピー

この例では、ツリーの数を 100 に選択し、サイズに応じて深さを選択します。データセットの 。過学習を避けるために、max_ Depth を 3 に設定します。

    データの分割
モデルをフィッティングして評価する前に、データセットをトレーニング セットとテスト セットに分割する必要があります。この例では、トレーニング データの 70% をモデルのトレーニングに使用し、残りの 30% をモデルの評価に使用します。

def train_test_split_data(X, y, test_size=0.3):
    return train_test_split(X, y, test_size=test_size, random_state=0)
ログイン後にコピー

    モデルのトレーニングと評価
このステップでは、トレーニングとテストに分割データを使用します。

fit() メソッドを使用してモデルをトレーニングし、テスト データを使用してモデルの精度を評価します。

def train_model(model, X_train, y_train):
    model.fit(X_train, y_train)
    return model

def evaluate_model(model, X_test, y_test):
    accuracy = model.score(X_test, y_test)
    return accuracy
ログイン後にコピー

完全なコードは次のとおりです。

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

def load_data():
    data = load_iris()
    return data.data, data.target

def create_model():
    model = RandomForestClassifier(n_estimators=100,
                                    max_depth=3,
                                    random_state=0)
    return model

def train_test_split_data(X, y, test_size=0.3):
    return train_test_split(X, y, test_size=test_size, random_state=0)

def train_model(model, X_train, y_train):
    model.fit(X_train, y_train)
    return model

def evaluate_model(model, X_test, y_test):
    accuracy = model.score(X_test, y_test)
    return accuracy

if __name__ == "__main__":
    X, y = load_data()
    X_train, X_test, y_train, y_test = train_test_split_data(X, y)
    model = create_model()
    trained_model = train_model(model, X_train, y_train)
    accuracy = evaluate_model(trained_model, X_test, y_test)
    print("Accuracy:", accuracy)
ログイン後にコピー
結論

Python でランダム フォレストを実装する手順には、データの読み込み、モデルの構築、データの分割、モデルのトレーニングと評価が含まれます。ランダム フォレスト モデルを使用すると、分類および回帰問題を効率的に解決し、複数の変数タイプの処理をサポートできます。ランダム フォレストは非常に柔軟性があるため、幅広いアプリケーション シナリオに適応できます。

以上がPython のランダム フォレスト技術とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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