gpt4 book ai didi

python - 将 Pandas 数据框拆分为互斥的子集

转载 作者:太空宇宙 更新时间:2023-11-03 15:56:32 25 4
gpt4 key购买 nike

我正在对 pandas 数据框中包含的数据使用回归树分析。为了执行 V 折交叉验证,我需要将我的数据分成 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

这样我就不会将所有剩余样本都放入最后一个容器中。

最佳答案

定义你的函数

def Vfold_Subsets(Data, V):
return Data.assign(
V=np.random.permutation(np.arange(len(Data))) % V)

关于python - 将 Pandas 数据框拆分为互斥的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42867080/

25 4 0