Обработка NaN в вычислении z-баллов для косинусного подобия

#r #dataframe #nan #cosine-similarity #standardized

#r #фрейм данных #nan #косинусное сходство #стандартизированный

Вопрос:

Здравствуйте, уважаемое сообщество переполнения стека,

сегодня у меня снова есть вопрос к сообществу. Моя проблема в том, что у меня очень большой набор данных с различными парами взаимодействия. Одна из таких пар взаимодействий показана здесь в примере 1.

 gt; dput(hau) structure(list(MEMBER_ID = c(6635622276, 6635622276, 10493988740,  10493988740, 6635622276, 6635622276, 6635622276, 6635622276,  6635622276, 6635622276, 6635622276, 6635622276, 10493988740,  6635622276, 6635622276, 6635622276, 6635622276, 6635622276, 6635622276,  10493988740, 6635622276, 6635622276, 6635622276, 6635622276,  10493988740, 10493988740, 10493988740, 6635622276, 6635622276 ), RATING = c(4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5), AUTHOR_ID = c(10493988740,  10493988740, 6635622276, 6635622276, 10493988740, 10493988740,  10493988740, 10493988740, 10493988740, 10493988740, 10493988740,  10493988740, 6635622276, 10493988740, 10493988740, 10493988740,  10493988740, 10493988740, 10493988740, 6635622276, 10493988740,  10493988740, 10493988740, 10493988740, 6635622276, 6635622276,  6635622276, 10493988740, 10493988740), STATUS = c(0L, 0L, 0L,  0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,  0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), CREATION = c("2002/04/25",  "2002/04/25", "2002/04/27", "2002/04/29", "2002/04/29", "2002/04/29",  "2002/04/29", "2002/04/29", "2002/04/30", "2002/05/01", "2002/05/02",  "2002/05/03", "2002/05/04", "2002/05/06", "2002/05/06", "2002/05/06",  "2002/05/07", "2002/05/08", "2002/05/09", "2002/05/09", "2002/05/13",  "2002/05/16", "2002/05/23", "2002/05/23", "2002/05/25", "2002/05/25",  "2002/05/25", "2002/05/28", "2002/05/29"), LAST_MODIFIED = c("2002/04/25",  "2002/04/25", "2002/04/27", "2002/04/29", "2002/04/29", "2002/04/29",  "2002/04/29", "2002/04/29", "2002/04/30", "2002/05/01", "2002/05/02",  "2002/05/03", "2002/05/04", "2002/05/06", "2002/05/06", "2002/05/06",  "2002/05/07", "2002/05/08", "2002/05/09", "2002/05/09", "2002/05/13",  "2002/05/16", "2002/05/23", "2002/05/23", "2002/05/25", "2002/05/25",  "2002/05/25", "2002/05/28", "2002/05/29"), Pair_ID = c(2934188L,  2934188L, 2934188L, 2934188L, 2934188L, 2934188L, 2934188L, 2934188L,  2934188L, 2934188L, 2934188L, 2934188L, 2934188L, 2934188L, 2934188L,  2934188L, 2934188L, 2934188L, 2934188L, 2934188L, 2934188L, 2934188L,  2934188L, 2934188L, 2934188L, 2934188L, 2934188L, 2934188L, 2934188L )), row.names = c(NA, -29L), class = c("data.table", "data.frame" ), .internal.selfref = lt;pointer: 0x7ff2e9814ce0gt;)  

Теперь проблема в том, что я часто получаю значения NaN после вычисления z-баллов. Причина этого мне известна. Пользователи, для которых отображается NaN, всегда имеют одинаковые значения, поэтому стандартное отклонение равно 0, и поэтому z-оценка не может быть рассчитана. Поэтому мой вопрос заключается в следующем:

Как обрабатываются значения NaN в таком контексте? Должен ли я считать это нулем?

 MEMBER_ID RATING AUTHOR_ID STATUS CREATION LAST_MODIFIED Pair_ID  1: 6635622276 -3.0895719 10493988740 0 2002/04/25 2002/04/25 2934188  2: 6635622276 -3.0895719 10493988740 0 2002/04/25 2002/04/25 2934188  3: 10493988740 NaN 6635622276 0 2002/04/27 2002/04/27 2934188  4: 10493988740 NaN 6635622276 0 2002/04/29 2002/04/29 2934188  5: 6635622276 0.3089572 10493988740 0 2002/04/29 2002/04/29 2934188  6: 6635622276 0.3089572 10493988740 0 2002/04/29 2002/04/29 2934188  7: 6635622276 0.3089572 10493988740 0 2002/04/29 2002/04/29 2934188  8: 6635622276 0.3089572 10493988740 0 2002/04/29 2002/04/29 2934188  9: 6635622276 0.3089572 10493988740 0 2002/04/30 2002/04/30 2934188 10: 6635622276 0.3089572 10493988740 0 2002/05/01 2002/05/01 2934188 11: 6635622276 0.3089572 10493988740 0 2002/05/02 2002/05/02 2934188 12: 6635622276 0.3089572 10493988740 0 2002/05/03 2002/05/03 2934188 13: 10493988740 NaN 6635622276 0 2002/05/04 2002/05/04 2934188 14: 6635622276 0.3089572 10493988740 0 2002/05/06 2002/05/06 2934188 15: 6635622276 0.3089572 10493988740 0 2002/05/06 2002/05/06 2934188 16: 6635622276 0.3089572 10493988740 0 2002/05/06 2002/05/06 2934188 17: 6635622276 0.3089572 10493988740 0 2002/05/07 2002/05/07 2934188 18: 6635622276 0.3089572 10493988740 0 2002/05/08 2002/05/08 2934188 19: 6635622276 0.3089572 10493988740 0 2002/05/09 2002/05/09 2934188 20: 10493988740 NaN 6635622276 0 2002/05/09 2002/05/09 2934188 21: 6635622276 0.3089572 10493988740 0 2002/05/13 2002/05/13 2934188 22: 6635622276 0.3089572 10493988740 0 2002/05/16 2002/05/16 2934188 23: 6635622276 0.3089572 10493988740 0 2002/05/23 2002/05/23 2934188 24: 6635622276 0.3089572 10493988740 0 2002/05/23 2002/05/23 2934188 25: 10493988740 NaN 6635622276 0 2002/05/25 2002/05/25 2934188 26: 10493988740 NaN 6635622276 0 2002/05/25 2002/05/25 2934188 27: 10493988740 NaN 6635622276 0 2002/05/25 2002/05/25 2934188 28: 6635622276 0.3089572 10493988740 0 2002/05/28 2002/05/28 2934188 29: 6635622276 0.3089572 10493988740 0 2002/05/29 2002/05/29 2934188  

Огромное спасибо,

Себастьян

Комментарии:

1. Ваш вопрос немного неясен, но почему бы просто не удалить участника с NaN s? Поскольку NaN это связано с тем, что участник дает одинаковый балл за все/один, казалось бы, вы могли бы легко удалить их.