Как рассчитать сходство jaccard между двумя строками во фрейме данных - PullRequest
0 голосов
/ 14 мая 2019

У меня есть файл Excel с записями студентов, включающими 14 атрибутов (показано ниже).Я хочу вычислить сходство между каждой парой студентов.

enter image description here

Сначала я должен преобразовать строки в массив символов.Затем я сделал матрицу термина документа и вычислил расстояние между каждой парой.Затем я вычитаю расстояние из 1. Но нахожу неправильное сходство.

F360 <- read_excel("C:/Users/DreamWorld/F360.xlsx")
mydf=data.frame(F360$nursery,F360$higher,F360$internet,F360$romantic,stringsAsFactors = FALSE)
td1=as.character(mydf[1,])
td2=as.character(mydf[2,])
d1=paste(td1[1],td1[2],td1[3],td1[4],sep = " ")
d2=paste(td2[1],td2[2],td2[3],td2[4],sep = " ")
myvector=c(d1,d2)
mycorpus=Corpus(VectorSource(myvector))
dtm=as.matrix(DocumentTermMatrix(mycorpus))
jdist=as.matrix(dist(dtm,method = "jaccard"))
jsim=1-jdist

Я ожидаю сходства между каждой парой строки во фрейме данных.

1 Ответ

0 голосов
/ 14 мая 2019

недавно я обнаружил, что функция sum даст мне ряд общих атрибутов.

Com=sum((td1==td2)==TRUE)

Далее нужно получить количество элементов в обоих векторах, которое, очевидно, равно 4.

len = length(td1)

Наконец, мы можем найти сходство Жакара, которое является пересечением над объединением.

sim = com/len
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...