我有一个训练数据,有20,000个以上的实例,分为3个类,分布如A = 10%,B = 20%,C = 70%。 sklearn或pandas或其他任何可以从这些数据中获取10%样本但同时尊重不同类别分布的方法吗?我需要对数据进行网格搜索,但原始数据集的维度太高(20,000 x 12,000特征维度)
train_test_split将保留分布,但它只将整个数据集拆分为两组,这两组仍然太大。
由于
答案 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)
答案 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
一起使用。应通过随机样本(大致)保留类的比例。