Как разделить набор данных на поезде, проверке и тестировании на основе значения другого столбцаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как разделить набор данных на поезде, проверке и тестировании на основе значения другого столбца

Сообщение Anonymous »

Учитывая набор данных формы: < /p>

Код: Выделить всё

         date      user   f1     f2       rank   rank_group  counts
0  09/09/2021  USER100  59.0  3599.9    1         1.0       3
1  10/09/2021  USER100  75.29 80790.0   2         1.0       3
2  11/09/2021  USER100  75.29 80790.0   3         1.0       3
1  10/09/2021  USER100  75.29 80790.0   2         2.0       3
2  11/09/2021  USER100  75.29 80790.0   3         2.0       3
3  12/09/2021  USER100  75.29 80790.0   4         2.0       3
2  11/09/2021  USER100  75.29 80790.0   3         3.0       3
3  12/09/2021  USER100  75.29 80790.0   4         3.0       3
4  13/09/2021  USER100  75.29 80790.0   5         3.0       3
3  12/09/2021  USER100  75.29 80790.0   4         4.0       3
4  13/09/2021  USER100  75.29 80790.0   5         4.0       3
5  14/09/2021  USER100  75.29 80790.0   6         4.0       3
4  13/09/2021  USER100  75.29 80790.0   5         5.0       3
5  14/09/2021  USER100  75.29 80790.0   6         5.0       3
6  15/09/2021  USER100  71.24 28809.9   7         5.0       3
5  14/09/2021  USER100  75.29 80790.0   6         6.0       3
6  15/09/2021  USER100  71.24 28809.9   7         6.0       3
7  16/09/2021  USER100  71.31 79209.9   8         6.0       3
6  15/09/2021  USER100  71.24 28809.9   7         7.0       3
7  16/09/2021  USER100  71.31 79209.9   8         7.0       3
8  17/09/2021  USER100  70.43 82809.9   9         7.0       3
7  16/09/2021  USER100  71.31 79209.9   8         8.0       3
8  17/09/2021  USER100  70.43 82809.9   9         8.0       3
9  18/09/2021  USER100  68.65 82809.9   10        8.0       3
< /code>
Учитывая, что 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 
[list]
[*]train, validation, test = np.split(user_dataset, [int(.7*len(user_dataset)), int(.2*len(user_dataset)), int(.1*len(user_dataset))])
[/list]
Подход II: Использование Ad-Hoc Split

Код: Выделить всё

        `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]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»