我正在寻找进行随机分层抽样(如调查和民意调查)的最佳方法。我不想做sklearn.model_selection.StratifiedShuffleSplit,因为我没有进行监督学习,也没有目标。我只想从pandas DataFrame(https://www.investopedia.com/terms/stratified_random_sampling.asp)创建随机分层的样本。

Python是我的主要语言。

感谢您的任何帮助

最佳答案

给定变量的仓位,下面的一根衬线应为您提供所需的输出。我看到scikit-learn主要用于您以外的目的,但是使用其中的功能应该不会有任何危害。

请注意,如果您的scikit-learn版本早于0.19.0,则采样结果可能包含重复的行。

如果您测试以下方法,请分享它是否表现出预期的效果。

from sklearn.model_selection import train_test_split

stratified_sample, _ = train_test_split(population, test_size=0.999, stratify=population[['income', 'sex', 'age']])

10-01 22:52
查看更多