Код: Выделить всё
date user weighted_mean_hr heartrate_duration_sum rank
0 09/09/2021 user100 59.000000 3599.99900 1 1,0 3
1 10/09/2021 User100 75.294190 80790.02658 2 1.0 3
2 09.11.2021 user100 75.294190 80790.02658 3 1,0 3
1 10/09/2021 User100 75.294190 80790.02658 2 2.0 3
2 11/09/2021 пользователь100 75,294190 80790.0268 3 2,021 3 2.021 3 2,021 3 2.021 3 2,021 3 2,021 3 2,021 3 2,021 3 2,021 3 2,021. 09/2021 user100 75.294190 80790.02658 4 2.0 3
2 11.09.2021 USER100 75.294190 80790.02658 3 3.0 3
3 12/09/2021 USER100 75.294190 80790.0268 4.021 31/09 31/09 31/093021 31/4. 4.021 315. 4. 4. 4. 4. 4.021 3151/01/093021 3. 4. 4. 4. 4.021 315.294190 8. 2021 user100 75.294190 80790.02658 5 3,0 3
3 12/09/2021 User100 75.294190 80790.02658 4 4.0 3
4 13/09/2021 USER100 75.294190 80790.02658 5 4.021 3 1421190790.02658 5 4.0 3 4.0 3 4.0 3 4.0 3 4.0 3 4.0 3 4.0 3 4.0 3 4.03 4.03. 75.294190 80790.02658 6 4.0 3
4 13/09/2021 User100 75.294190 80790.02658 5 5,0 3
5 14/09/2021 User100 75.294190 80790.02658 6 5.0 3
6 15/20218.202188.078.88.202188.88.2098.88.2021888.88.20988.078 809,99200 7 5.0 3
5 14/09/2021 USER100 75.294190 80790.02658 6 6.0 3
6 15/09/2021 USER100 71.248872 28809.99200 7 6.0 3
7 16/09/2021 USER100 71.317258 79209.97800 8 6.0 3
6 15/09/2021 USER100 71.248872 28809.99200 7 7.0 3
7 16/09/2021 USER100 71.317258 79209.97800 8 7.0 3
8 17/09/2021 USER100 70.434126 82809.97700 9 7.0 3< BR/> 7 16/09/2021 USER100 71.317258 79209.97800 8 8.0 3
8 17/09/2021 USER100 70.434126 82809.97700 9 8.0 3
9 18/09/2021 пользователь100 68.6513771 82809.977777777777777777777777.. >
Учитывая, что rank_group указывает, что набор данных имеет 8 групп. Я хотел бы разделить на три набора данных (поезд, проверка и тест) со скоростью 70%, 20%, 10%соответственно. В этом случае я ожидаю, что Train_set содержит все строки в соответствующем rank_group = 1,0,2,0,3,0,4,0,5,0. validation_set содержит все строки в соответствии с rank_group = 6.0,7.0, а test_set содержит все строки в соответствии с rank_group = 8.0.
Подход I: с использованием разделения от Numpy
Код: Выделить всё
train, validation, test = np.split(user_dataset, [int(.7*len(user_dataset)), int(.2*len(user_dataset)), int(.1*len(user_dataset))])
Код: Выделить всё
`max_rank_group = user_dataset[rank_group].max()
train_number = round(max_rank_group * train_rate)
validation_number = round((max_rank_group-train_number) * validation_rate)
test_number = round((max_rank_group-validation_number) * test_rate)
print('train_number ', train_number)
print('validation_number ', validation_number)
print('test_number ', test_number)
print(' ')
train_number_frac = train_number % 1
validation_number_frac = validation_number % 1
test_number_frac = train_number % 1
current_train_rank_list = []
if train_number_frac >= 0.5:
current_train_rank_list = range(1, train_number+1)
else:
current_train_rank_list = range(1, train_number)
current_validation_rank_list = []
if validation_number_frac >= 0.5 and (train_number+validation_number+2) < max_rank_group:
current_validation_rank_list = range(train_number, train_number+validation_number+2)
else:
current_validation_rank_list = range(train_number, train_number+validation_number+1)
current_test_rank_list = []
if test_number_frac >= 0.5 and (train_number+validation_number+test_number+2)
Подробнее здесь: [url]https://stackoverflow.com/questions/79412324/how-to-split-a-dataset-in-train-validation-and-test-based-on-the-value-of-anoth[/url]