列車、クロスバリデーション、テストセットを作成するトレーニングセットからランダムサンプル60:20:20を抽出しようとしています。私は、次のコードを使用しているランダムサンプルセットを作成して、ラベルに基づいたクロスバリデーションとトレーニングセットを作成
:私は私のトレーニングセットは、教師学習データとデータフレームの最後の列であることに気づいしかし
train=data.sample(frac=0.6)
trcv=data.drop(train.index)
test=trcv.sample(frac=0.5)
cv=trcv.drop(test.index)
は値が1かでラベルY(列名)が含まれてい0
トレーニング、テスト、クロスバリデーションを作成する方法は、y = 0、y = 1の.99:.1のサンプルを割り当ててトレーニングセットに割り当てたいということです。これは、トレーニングセットに100個のレコードがある場合、99個のレコードをy = 0にし、1個のレコードのみをy = 1にすることを意味します。
45%に設定検証およびテストを横切るところで分割するy = 1で必要に残りの99%のレコード、実行の44%
1つの可能な方法は、カラムとレコードのコピーを含むデータフレームを作成することですYを1に設定し、y = 1のマスターデータフレームからすべてのレコードを削除します。
Y1=data[data.iloc[:,8]==1]
data=data[data.iloc[:,8]!=1]
次に、上記のサンプル配布をcv、テスト、トレーニングセットに適用します。
train=data.sample(frac=0.6)
trcv=data.drop(train.index)
test=trcv.sample(frac=0.5)
cv=trcv.drop(test.index)
今0.1をサンプル:0.44:0.45データフレームからY = 1
ycvT=Y1.sample(frac=0.99)
ytr=Y1.drop(ycvT.index)
ytest= ycvT.sample(frac=0.45)
ycv= ycvT.drop(ytest.index)
とこれがY = 1を含む3つの異なるデータフレームを作成します。
Now I can add them to the training , cross validation and test set.
train=train.append(ytr)
train=train.sample(frac=1).reset_index(drop=True)
..およびcvおよびテストセットの場合。
私は、これを行うよりスマートな(より短い)方法があるのだろうかと思っていました。私はパンダ、ナンディとscipyに自分自身を制限したい。
ヒント?ありがとう。
です。 frac = 0.1? – sunny
@sunny fracはあなたが引っ張ってほしい部分のどれでも – piRSquared