ランダムフォレスト(まずは決定木)
会社で次やってみようとなったのが、ランダムフォレストを用いた戦略の検証なので、その勉強。
参考サイト
【機械学習】決定木をscikit-learnと数学の両方から理解する - Qiita
コード
前回からちょろちょろ手を付けているkaggleのtitaincのデータで実装してみる
今回はとりあえず決定木。
test_path = '/kaggle/input/titanic/test.csv' train_path = '/kaggle/input/titanic/train.csv' sub_path = '/kaggle/input/titanic/gender_submission.csv' train_ = pd.read_csv(train_path) test_ = pd.read_csv(test_path) gender_submission = pd.read_csv(sub_path) # merge data = pd.concat([train_, test_]) # 特徴量エンジニアリング # sex data['Sex'].replace(['male','female'], [0, 1], inplace=True) # Embarked data['Embarked'].fillna(('S'), inplace=True) data['Embarked'] = data['Embarked'].map( {'S': 0, 'C': 1, 'Q': 2} ).astype(int) # Fare data['Fare'].fillna(np.mean(data['Fare']), inplace=True) # Age # age_avg = data['Age'].mean() # age_std = data['Age'].std() # data['Age'].fillna(np.random.randint(age_avg - age_std, age_avg + age_std), inplace=True) data['Age'].fillna(np.mean(data['Age']), inplace=True) # delete columns delete_columns = ['Name', 'PassengerId', 'SibSp', 'Parch', 'Ticket', 'Cabin'] data.drop(delete_columns, axis=1, inplace=True) # ここから決定木する準備 train = data[:len(train_)] test = data[len(train_):] y_train = train['Survived'] X_train = train.drop('Survived', axis = 1) X_test = test.drop('Survived', axis = 1) # こんなところでimportしているのもご愛敬 from sklearn.tree import DecisionTreeClassifier, export_graphviz # import graphviz # import pydotplus # from IPython.display import Image # from sklearn.externals.six import StringIO clf = DecisionTreeClassifier() clf = clf.fit(X_train, y_train) y_pred = clf.predict(X_test) # 提出 sub = gender_submission sub['Survived'] = list(map(int, y_pred)) sub.to_csv('submission.csv', index = False)
スコアは0.75358