python:从数据中随机抽取样本,但保持相同的分布

时间:2017-07-07 07:09:34

标签: python pandas scikit-learn

我有一个训练数据,有20,000个以上的实例,分为3个类,分布如A = 10%,B = 20%,C = 70%。 sklearn或pandas或其他任何可以从这些数据中获取10%样本但同时尊重不同类别分布的方法吗?我需要对数据进行网格搜索,但原始数据集的维度太高(20,000 x 12,000特征维度)

train_test_split将保留分布,但它只将整个数据集拆分为两组,这两组仍然太大。

由于

3 个答案:

答案 0 :(得分:2)

您应该使用Stratifiefkfold。通过保留每个类别的样本百分比来进行折叠。 请参阅文档以了解如何使用它。

答案 1 :(得分:0)

train_test_split函数允许定义训练数据的大小:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1)

See the docs

答案 2 :(得分:0)

您应该可以将df1 <- structure(list(No = 1:9, Event = c("A", "B", "B", "B", "C", "B", "B", "B", "A"), Time = c("22:00:00", "22:00:10", "22:00:20", "22:00:30", "22:00:40", "22:00:10", "22:00:20", "22:00:30", "22:00:40" )), .Names = c("No", "Event", "Time"), class = "data.frame", row.names = c(NA, -9L)) train_test_split一起使用。应通过随机样本(大致)保留类的比例。