python中带替换的分层样本

pyt*_*das 4 python random sample sklearn-pandas

我有一只熊猫DataFrame。我正在尝试创建一个DataFrame带有替换的样本并将其分层。

这允许我替换:

df_test = df.sample(n=100, replace=True, random_state=42, axis=0)
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何分层。我可以使用该weights参数吗?如果可以,如何使用?我想要分层的列是字符串。

这让我可以分层:

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(
    X, Y, test_size=.50, stratify=Y, random_state=42)
Run Code Online (Sandbox Code Playgroud)

但是,没有选择替换。

如何同时分层和替换?

小智 5

这是一个有点老的问题,但由于当我在寻找相同的东西时,谷歌首先返回了我这个问题,我认为将这个问题留在这里对每个人(包括我未来的自己)都是有用的。

显然在sklearn.utils.resamplesklearn中提供了此功能:

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)
Run Code Online (Sandbox Code Playgroud)

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