Следующий чрезвычайно упрощенный DataFrame представляет гораздо больший DataFrame, содержащий медицинские диагнозы:
medicalData = pd.DataFrame({'diagnosis':['positive','positive','negative','negative','positive','negative','negative','negative','negative','negative']})
medicalData
diagnosis
0 positive
1 positive
2 negative
3 negative
4 positive
5 negative
6 negative
7 negative
8 negative
9 negative
Для машинного обучения Мне нужно случайным образом разбить этот кадр данных на три подкадра следующим образом:
trainingDF, validationDF, testDF = SplitData(medicalData,fractions = [0.6,0.2,0.2])
Если массив разделения указывает долю полных данных, которые поступают в каждый подкадр, данные в подкадре должны быть взаимоисключающими, а массив разделения должен суммироваться в единицу. Кроме того, доля положительных диагнозов в каждом подмножестве должна быть примерно одинаковой.
Ответы на этот вопрос рекомендуют использовать метод выборки панд или функция train_test_split из sklearn .Но ни одно из этих решений, по-видимому, не обобщает хорошо на n разбиений, и ни одно из них не дает стратифицированного разбиения.