ランダムフォレスト
1 2 3 4 5 6 7 8 9 10 11 12 13 |
train_X = df.drop('Survived', axis=1) train_y = df.Survived ( train_X, test_X ,train_y, test_y ) = train_test_split(train_X, train_y, test_size = 0.3, random_state = 666) #ランダムフォレスト from sklearn.ensemble import RandomForestClassifier clf = RandomForestClassifier(random_state=0) clf = clf.fit(train_X, train_y) pred = clf.predict(test_X) fpr, tpr, thresholds = roc_curve(test_y, pred, pos_label=1) auc(fpr, tpr) accuracy_score(pred, test_y) |
- criterion : 分割基準。gini or entropyを選択。(デフォルトでジニ係数)
- max_depth : 木の深さ。木が深くなるほど過学習し易いので、適当なしきい値を設定してあげる。
- max_features:最適な分割をする際の特徴量の数
- min_samples_split:分岐する際のサンプル数
- random_state:ランダムseedの設定。seedを設定しないと、毎回モデル結果が変わるので注意。
公式ドキュメント
sklearn.tree.DecisionTreeClassifier — scikit-learn 0.19.1 documentation
どの要素が強く影響を与えているかを確認
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import matplotlib.pyplot as plt import numpy as np %matplotlib inline features = train_X.columns importances = clf.feature_importances_ indices = np.argsort(importances) plt.figure(figsize=(6,6)) plt.barh(range(len(indices)), importances[indices], color='b', align='center') plt.yticks(range(len(indices)), features[indices]) plt.show() |
コメントを残す