# Random forest
# モジュール:サンプルデータ>訓練検証分割>モデル
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
# データのインスタンスを作成
iris = load_iris()
# キーを確認
iris.keys()
#dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename'])
# input dataとtarget data として抽出する
X, y = iris.data, iris.target
# 訓練・検証データに分割する
X_train, X_test, y_train, y_test = train_test_split(X, y ,test_size=0.3, random_state=0)
# ランダムフォレストをインスタンス化する 100個の決定木
forest = RandomForestClassifier(n_estimators=100,random_state=0)
forest
'''
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
max_depth=None, max_features='auto', max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=100, n_jobs=None,
oob_score=False, random_state=0, verbose=0, warm_start=False)
'''
# 訓練する
forest.fit(X_train, y_train)
# 予測する
y_predicted = forest.predict(X_test)
y_predicted
# 正解率を算出する
import pandas as pd
df = pd.DataFrame(y_test,y_predicted)#, y_test, y_predicted)
result = df.index == df[0]
score = sum(result)/len(result)
'''
0.9777777777777777
'''
score
result