パンダのデータフレームに含まれるデータについて回帰分析を使用しています。 V-foldクロスバリデーションを実行するには、私のデータをVのランダムで相互排他的なサブセットに分割する必要があります。パンダのデータフレームを相互に排他的なサブセットに分割する
これまでのところ、データフレームに新しい列V = 10を追加しました。
def Vfold_Subsets(Data,V):
subs = Data
Data['V'] = V
N = Data.shape[0]
n = N//V
for v in range(1,V):
sample = subs.sample(n = n)
Data['V'][Data.index.isin(sample.index)] = v
subs.drop(sample.index)
return Data
このメソッドは機能しますが、私はそれを行うより良い方法があると感じていますか?この方法の欠点は、その後、N = 108場合である
for v in range(1,V+1):
print (v,': ',Data['V'][Data['V']==v].count())
リターン:
1 : 10
2 : 10
3 : 10
4 : 10
5 : 10
6 : 10
7 : 10
8 : 10
9 : 10
10 : 18
そして、私は私はこの
1 : 10
2 : 11
3 : 11
4 : 11
5 : 11
6 : 11
7 : 11
8 : 11
9 : 10
10 : 10
ような何かを達成することができれば、それは良いことだと思います残りのすべてのサンプルを最後のビンに入れないでください。
グループは偶数っぽいことする必要がありますか? – piRSquared
私は彼らが絶対に必要であることを知らない、もし私が十分に大きいNを持っていれば、それは問題ではないと思う?しかし、私はそれらが好きです。 –