import numpy as np; import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
df_flask = pd.DataFrame([[100,152,70,80,2,10]],columns=['weight','height','wc','hc','sex','age'])
df_flask2 = pd.DataFrame([[55.6,154,92,27,1,70]],columns=['weight','height','wc','hc','sex','age'])
print (cosine_similarity(df_flask2.iloc[[0]],df_flask.iloc[[0]]))
我有这个示例代码试图获得余弦相似性,因为我的目标是让他们最相似的人,我想知道这是否适用于作为相似性度量?我已经看到论文使用皮尔逊相关和其他算法进行人 - 人比较,但我想尝试使用余弦相似性(如果适用)。
答案 0 :(得分:2)
是的,但有潜在的问题。
可能知道余弦相似度将计算两个条目之间的点积。由于值的范围不相似,因此达到较高值的组件将主导结果。在这种情况下,它将是身高和体重。比较两个性别(达到2)并且你会发现性别无关紧要(除非其他一切都相同)。
这可能不是你想要的。为了确保相对于不同维度的相似性更加均匀,可以考虑将值标准化为相似的范围(例如0到1)。
如果您确实希望某些功能比其他功能更重要,您可以向上或向下缩放它们以获得适合您应用的功能。