Machine-learning-with-python-random-forest

提供:Dev Guides
移動先:案内検索

機械学習-ランダムフォレスト

これは、バギングされた決定木の拡張です。 個々の分類子の場合、トレーニングデータセットのサンプルは置換されて取得されますが、ツリーはそれらの間の相関を減らすように構築されます。 また、特徴のランダムなサブセットは、各ツリーの構築において最適な分割ポイントを貪欲に選択するのではなく、各分割ポイントを選択すると見なされます。

次のPythonレシピでは、Pima Indians糖尿病データセットでsklearnのRandomForestClassifierクラスを使用して、バギングされたランダムフォレストアンサンブルモデルを構築します。

まず、次のように必要なパッケージをインポートします-

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier

さて、前の例のようにPima糖尿病データセットをロードする必要があります-

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names = headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]

次に、次のように10倍クロス検証の入力を与えます-

seed = 7
kfold = KFold(n_splits = 10, random_state = seed)

構築するツリーの数を指定する必要があります。 ここでは、5つの特徴から選択された分割点で150本の木を構築しています-

num_trees = 150
max_features = 5

次に、次のスクリプトの助けを借りてモデルを構築します-

model = RandomForestClassifier(n_estimators = num_trees, max_features = max_features)

次のように結果を計算して印刷します-

results = cross_val_score(model, X, Y, cv = kfold)
print(results.mean())

出力

0.7629357484620642

上記の出力は、バギングされたランダムフォレスト分類子モデルの精度が約76%であることを示しています。