2014-12-31 96 views
-2

如何測量三個向量之間的相似度? 假設我有三名學生和他們的學科標記。 學生1(12,23,43,35,21)
學生2(23,34,45,25.17)和 學生3(34,43,22,11,39)
現在我想測量這三名學生的相似之處。誰可以幫我這個事。提前致謝。如何測量三個向量之間的相似度?

+1

對於stats.stackexchange.com而不是這裏,這是一個更好的問題。你還應該指定你正在使用的軟件,R或SAS將有非常不同的答案。 – Reeza

+0

'?dist' for R .. – Jealie

+0

?stringdist for R – lawyeR

回答

0

你想要相似性,而不是相異性。後者有許多功能,有些在評論中提到。最不常用的度量標準是歐幾里德距離。

要測量相似性,可以使用R中proxy包中的simil(...)函數,如下所示。假設分數都以相同的順序爲每一位學生,你將分數組合成一個矩陣行方向,則:

Student.1 <- c(12, 23, 43, 35, 21) 
Student.2 <- c(23, 34, 45, 25, 17) 
Student.3 <- c(34, 43, 22, 11, 39) 
students <- rbind(Student.1,Student.2,Student.3) 

library(proxy) 
simil(students,method="Euclidean") 
#    Student.1 Student.2 
# Student.2 0.04993434   
# Student.3 0.02075985 0.02593140 

此計算爲每一個學生與所有其他學生,並且將歐氏距離即使用一個相似性得分

SIM = 1 /(1 + DIST)

因此,如果分數兩個學生是相同的,它們的相似性將是1

但這只是其中一種方法。有48個相似性/距離度量在proxy包進行編碼,可以使用被列出:

pr_DB$get_entries() 

你甚至可以編寫自己的指標使用,例如,

simil(students,FUN=f) 

其中f(x,y)是一個函數將兩個向量作爲參數並返回按您的喜好定義的相似性分數。這可能是相關的,例如,如果某些課程「更重要」,因爲您希望對這些課程的差異進行權重比其他課程更高。

相關問題