0

今、kaggle のチュートリアルを行っていますが、出力を見てドキュメントを読んで、それが何をするかについての基本的な考え方を理解していますが、ここで何が起こっているのかを確認する必要があると思います:

predictors = ["Pclass", "Sex", "Age", "SibSp", "Parch", "Fare", "Embarked"]
kf = KFold(titanic.shape[0], n_folds=3, random_state=1)

predictions = []

for train, test in kf:
     train_predictors = (titanic[predictors].iloc[train,:])

ここでの私の主な問題は、関数の最後の行ilocです。残りは文脈のためだけです。トレーニングデータを分割するだけですか?

4

1 に答える 1

2

.iloc[](または、この場合のみ)にアクセスrowしてcolumnインデックスを作成するための主要な方法です。Indexing docs で非常によく説明されています。pandas DataFramesSeriesindex

この特定のケースでは、scikit-learn docsから:

KFoldフォールドと呼ばれる k 個のサンプル グループにすべてのサンプルを分割し (k = n の場合、これは Leave One Out 戦略と同等です)、同じサイズ (可能な場合) です。予測関数は k - 1 フォールドを使用して学習され、残りのフォールドはテストに使用されます。4 つのサンプルを持つデータセットでの 2 分割交差検証の例:

import numpy as np
from sklearn.cross_validation import KFold

kf = KFold(4, n_folds=2)
for train, test in kf:
    print("%s %s" % (train, test)) 
[2 3] [0 1] [0 1] [2 3]

言い換えると、KFoldindex位置を選択します。これらはforループで使用されてkfに渡され、トレーニング セットを含むから.iloc適切なrow index(およびすべてのcolumns)が選択されます。titanic[predictors] DataFrame

于 2015-12-10T19:15:47.037 に答える