python中带替换的分层样本

2024-03-29 09:04:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一只熊猫。我正在尝试创建一个带有替换的示例DataFrame,并对其进行分层。在

这样我就可以替换:

df_test = df.sample(n=100, replace=True, random_state=42, axis=0)

然而,我不知道如何也分层。我可以使用weights参数吗?如果可以,如何使用?我要分层的列是字符串。在

这使我可以分层:

^{pr2}$

然而,没有替代的选择。在

如何既分层又替换?在


Tags: sample字符串testtrue示例dataframedf参数
2条回答

据我所知,来自sklearn的默认StratifiedShuffleSplit将与替换一起运行,即非互斥strats。希望我能正确理解你。在

import numpy as np
from sklearn.model_selection import StratifiedShuffleSplit
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([0, 0, 0, 1, 1, 1])
sss = StratifiedShuffleSplit(n_splits=5, test_size=0.5, random_state=0)
sss.get_n_splits(X, y)

print(sss)       

for train_index, test_index in sss.split(X, y):
   print("TRAIN:", train_index, "TEST:", test_index)
   X_train, X_test = X[train_index], X[test_index]
   y_train, y_test = y[train_index], y[test_index]

产量:

^{pr2}$

这是一个有点老的问题,但是当我在寻找同样的东西时,google首先把这个问题还给了我,我想把这个留给每个人,包括我未来的自己,会很有用的。在

显然,sklearnsklearn.utils.resample中提供了此功能:

from sklearn import datasets
from sklearn.utils import resample

X, y = datasets.load_iris(return_X_y=True)
X_new, y_new = resample(X, y, stratify=y)

您可以使用n_samples参数控制样本量。默认情况下,它被设置为None,因此您可以通过替换获得X.shape[0]随机样本(因为这是为引导目的而设计的)。希望这对某人有帮助。在

相关问题 更多 >