Я использую набор данных movielens (ratings.dat) и базу данных pandas для чтения и обработки данных. Мне нужно разбить эти данные на тестовые и обучающие комплекты. При использовании PANDAS dataframe.sample функции, и может разделить данные в случайный splits.For Например:Сплит-набор данных для пользователя в соответствии с меткой времени в тренировке и тестовом наборе в python
поезд = df.sample (гидроразрыв = 0,8, random_state = 200)
теста = df.drop (train.index)
Теперь я пытаюсь сортировать данные по user_id, а затем по метке времени, и мне нужно разделить данные на 80% -20% на пользователя в наборе обучения и тестовом наборе соответственно.
Так, например, если user1 рейтинг 10 фильмов, то данные для этого пользователя следует сортируется от старых к последней в соответствии с временной меткой
рейтинги = pd.read_csv («имя_файла», Сентябре = '\ т », двигатель = 'Python', заголовок = 0)
sorted_df = ratings.sort ([ 'user_id', 'временная метка'], по возрастанию = [Правда, True])
и расщепление должно таким образом, чтобы первые 8 записей с самой старой отметкой времени были в наборе тренировок и последние 2 записи будут в тестовом наборе.
Я понятия не имею, как я мог это сделать. Какие-либо предложения?
Благодаря
данных:
user_id item_id rating Timestamp
15 1 539 5 838984068
16 1 586 5 838984068
5 1 355 5 838984474
9 1 370 5 838984596
12 1 466 5 838984679
14 1 520 5 838984679
19 1 594 5 838984679
7 1 362 5 838984885
20 1 616 5 838984941
23 2 260 5 868244562
29 2 733 3 868244562
32 2 786 3 868244562
36 2 1073 3 868244562
33 2 802 2 868244603
38 2 1356 3 868244603
30 2 736 3 868244698
31 2 780 3 868244698
27 2 648 2 868244699
спасибо. Объяснение очень ясное, это помогло :) – ssh26
приветствия, я рад, что это сделал трюк! :) –