背景
何かをするためにこのゲームを輝かお勧め2年前、私は結果のページが保持されますと、どこから始めればわからなかった開きます。
2年後、はっきりと確認するために、もう一度ページを開きタイタニックチュートリアル- Kaggleを完全にだます、スーツの下に従うことを行うことができます。何年〜私の目を盲目にされました
目標
乗客はタイタニック号の難破船で生き残った予測モデルを作成するために機械学習を使用
データ
- train.csv
- 生き残っ:1 =はい、0 =いいえ
- test.CSV
- gender_submission.csv:予測
- PassengerId:のtest.CSVからのもの
- 生き残っ:最終結果
ヘルプの開始とフォローまでガイド
学習モデル
コンクリートの背後の話に抜粋サイトの解釈、。
- ランダムフォレストモデル
- いくつかの「木」の構築
- 個別に各乗員のデータを検討すること
- そして個人が生き残ったかどうかの投票。
- その後、ランダムフォレストモデルは、民主的な決定を下します:
- 最も多くの票の勝利と成果!
- いくつかの「木」の構築
sklearn.ensemble.RandomForestClassifier
タイタニックゲームがで使用されてRandomForestClassifier
、私は気づいた、前のアルゴリズム、これについてのアルゴリズムsklearn
アルゴリズムのクラスにしているensemble
モジュール、英語は私にはわからない、良いではないensemble
何か手段は?私が最初に見たいですensemble
アンサンブル
辞書の説明は次のとおりです。a number of things considered as a group
手段の組み合わせのように聞こえます。
ビットを検索、MLはしているensemble learning
を参照して、より多くの「総合学習」より翻訳統合学習(アンサンブル学習)がスターターべきか?-ほとんど知っているフレームワークを学ぶ統合3つの一般的ながあることを述べた:bagging
、boosting
とstacking
。
APIリファレンス- scikit-学ぶ0.22.1ドキュメントこれらのタイプのは、フレームが対応するアルゴリズムを持って見ることができます。
Random Forest
これは、あるbagging
アルゴリズムの枠組み。ここでは、単一の最初にこれを理解しようとする、そのような出会いの後など他のフレームワークと言って。しかし、この程度の前に、まだクリアする必要がありアンサンブル学習を終わりにあるもの?
統計および機械学習では、アンサンブルの方法は単独の構成学習アルゴリズムのいずれかから得ることができるよりも優れた予測性能を得るために、複数の学習アルゴリズムを使用します。
この文字通りの意味の解釈、そしてあるべき、より良い予測性能のためのアルゴリズムの様々な組み合わせは、結果だけではどの単一のアルゴリズムよりも優れています。
袋掛け
sklearn.ensemble.BaggingClassifier - 0.22.1ドキュメントをscikit-学びます
Aバギング分類器は、フィットは、元のデータセットのランダムなサブセットに分類各々のベースと、最終的な予測を形成するために、(いずれかの平均投票するかによって)、それらの個々の予測を集約することをアンサンブルメタ推定量です。
効果とは:
- ランダムソースデータからサンプルのサブセットを設定します
- サンプルのこのサブセットに分類器を訓練
- 上記の手順を複数回繰り返し、
- 次に、各分類器の統合(平均化または投票)の結果を予測します
- 最終予測を形成します
質問は次のとおりです。
- どのように多くのサンプルのセット次男が描かれた、すなわち、分類器が何をどのくらい?
- 何がランダムに選択されたアルゴリズム?
- すべての分類結果の統合平均および投票はどのような利点と欠点がありますか?
- 各分類器を訓練する方法?
私は知りません -
前述のRandom Forest
あるbagging
アルゴリズムの枠組み。今、このアルゴリズムは私の質問のいくつかに答える方法での見てみましょう。
ランダムフォレストアルゴリズム
1.11。アンサンブル方法 - scikit-学ぶ0.22.1ドキュメント
アンサンブルの予測は、個々の分類の平均予測として与えられます。
まず、明確な一つは、このアルゴリズムは、各分類器の平均化を嫌いです。何?自然の森は、木の森であり、ここでは木はを参照デシジョンツリーアルゴリズムは、実際にあるので、averaging algorithms based on randomized decision trees
ランダムフォレストは、複数の決定木を構築し、より正確で安定した予測を得るためにそれらを一緒にマージします。
Random forest
私たちは、各分類器のための決定木を構築し、次にマージします。
分類器は、それを分割する方法ですか?または次を理解しようとする例として、コードタイタニックで:
from sklearn.ensemble import RandomForestClassifier
y = train_data["Survived"]
features = ["Pclass", "Sex", "SibSp", "Parch"]
X = pd.get_dummies(train_data[features])
model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=1)
model.fit(X, y)
y
:災害を生き残った上で、訓練の人々の集まり焦点でありますfeatures
:などのセックス、少数の、スペース、などこれらの人々の固有値、- X:ダミーデータを生成し、なぜべきで
get_dummies
直接使用しないでtrain_data[features]
、それを?
直接にしてくださいtrain_data[features]
Xを印刷し、その結果がこれです:
Pclass Sex SibSp Parch
0 3 male 1 0
1 1 female 1 0
私たちは、このXモデルを続行する場合、それは文句を言うでしょう。
ValueError: could not convert string to float: 'male'
セックスは、文字列型のフィールドがあり、そして必要とされているモデルは、フロートなので当然なので、直接使用することはできません train_data[features]
そのget_dummies()
役割は明らかに、フロートにフィールドのこれらの文字列型に変換することです。結果は、性別フィールドは、その値はそれぞれ0および1である、二つのフィールド、Sex_male、Sex_femaleに分割され、次の印刷から分かります。
Pclass SibSp Parch Sex_female Sex_male
0 3 1 0 0 1
1 1 1 0 1 0
2 3 0 0 1 0
3 1 1 0 1 0
4 3 0 0 0 1
.. ... ... ... ... ...
886 2 0 0 0 1
887 1 0 0 1 0
888 3 1 2 1 0
889 1 0 0 0 1
890 3 0 0 0 1
RandomForestClassifier(n_estimators=100, max_depth=5, random_state=1)
- これらのパラメータは、これはどういう意味ですか?
- n_estimators:決定木の数
- max_depths:ツリーの最大の深さ
- random_state:コントロール乱数生成器、(?実際には非常にこれはランダムランダムサンプリングに言及されていない、理解していない)、あなたは、このようなシャッフルなどの他のパラメータと協力することをお勧めします。リファレンスはまた、複数の実行を毎回行う制御アルゴリズムにより乱数、というか、同じ結果を生成しましたか?
- (すなわち、それを複数回実行すると同じ結果になります)無作為化アルゴリズムの決定論を作るために、任意の整数random_stateを使用することができます
- これらのパラメータは、これはどういう意味ですか?
パラメータを調整する方法の詳細は、参照チューニングガイドラインパラメータ
Random Forest
アプリケーションのシナリオ
それは分類アルゴリズムであるので、自然な分類の多くは、アプリケーションシナリオに適しており、回帰問題のシナリオに加えて。
記事ランダムフォレストアルゴリズム:コンプリートガイド -組み込みでは、 類推の実用的な例を示します:
- あなたは、あなたの友人に尋ねる行く、旅行する場所を決めます
- 友人は、あなたの前の旅行の好き嫌いの側面尋ね
- これに基づき、我々はいくつかの提案を与えます
- あなたの決定のためのこの提供材料
- あなたが別の友人に聞いて行ったのと同じステップ
- 別のと別の友人
- ...
また、あなたはどのなど、いくつかのオファー、そして迷いを取得し、のこぎり、いくつかの家を、一見この方法を試して適用することができ、何をすべきかを決定します。
いくつか学んだ前に、コードに精通していません
- pandas.DataFrame.headは:データ、パラメータnは、デフォルトのn = 5のデータ・セットの最初の数行を返します。
test_data = pd.read_csv("/kaggle/input/titanic/test.csv")
test_data.head()
men = train_data.loc[train_data.Sex == 'male']["Survived"]
rate_men = sum(men)/len(men)
参照
ブログ記事複数のプラットフォームからこの記事OpenWriteリリース!