Цель:
Я разрабатываю стековый шумоподавляющий автокодер, для которого я использую набор данных 1M MovieLens в качестве входных данных.
Проблема:
Характер набора данных имеет оценки от 1 до 5 или 0, т. Е. Если пользователь не оценивал / не смотрел фильм в процессе предварительной обработки.Теперь, когда традиция продолжает добавлять шум в первую очередь для разработки SDA, я не могу установить ограничение, согласно которому добавляемый шум не должен превышать 5 (это самый высокий показатель по шкале).Это приносит мне еще 2 вопроса
- Должен ли шум быть в долях?например, если * AR = 3, то NR = 3,15?
- Или их можно заменить на целое число в диапазоне?если AR = 5, то NR = 2
Что должно работать или правильно?
* AR = фактический рейтинг
* NR = уровень шума
Trial 'n' Error
вот заголовок набора данных:
data_preprocessed.head()
Dtype это float, так как NaN имеет тип float.
0 1 2 3 4 5 6 7 8 9 ... 3704 \
0 5.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0
1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0
2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0
3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0
4 0.0 0.0 0.0 0.0 0.0 2.0 0.0 0.0 0.0 0.0 ... 0.0
Теперь я попробовал здесь на примере набора данных;случайным образом выбрать записи, чтобы добавить шум, однако вместо этого изменяется вся запись.
df = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6], 'B': [11, 12, 13, 14, 15, 16]})
df
A B
0 1 11
1 2 12
2 3 13
3 4 14
4 5 15
5 6 16
Здесь, если вы видите, что это работает с записями полностью.
dfUpdate = df.sample(3)
df.update(dfUpdate.applymap(lambda x: pd.np.random.randint(1, 5)))
df
A B
0 1.0 11.0
1 1.0 4.0
2 4.0 1.0
3 4.0 14.0
4 1.0 1.0
5 6.0 16.0
I ожидайте что-то вроде этого: где Cols и Rows выбираются случайным образом, а не записываются целиком
A B
0 1 5
1 2 12
2 6 13
3 4 7
4 5 10
5 8 16