当执行sklearn.metrics.pairwise.cosine_similarity时,我得到的结果带有索引0、1、2 ...和列名称0、1、2 ...
如何将结果转换为原始的列名和索引名?
用于计算的数据框:
user_id | age | education | income | length_residence
-----------------------------------------------------------------------
NIODB6S3 | 43.769912 | 1.537634 | 58.754647 | 7.232344
BOAWG65L | 43.769912 | 1.537634 | 58.754647 | 7.232344
3667B8P0 | 20.000000 | 1.000000 | 40.000000 | 4.000000
VS53SKY5 | 35.000000 | 1.537634 | 75.000000 | 14.000000
我运行的代码:
pd.DataFrame(cosine_similarity(df))
预期:
user_id | NIODB6S3 | BOAWG65L | 3667B8P0
user_id |
----------------------------------------------
NIODB6S3 | 1.000000 | 0.000084 | 0.996848
BOAWG65L | 0.000084 | 1.000000 | 0.000342
3667B8P0 | 0.996848 | 0.000342 | 1.000000
知道:
| 0 | 1 | 2
--------------------------------------
0 | 1.000000 | 0.000084 | 0.996848
1 | 0.000084 | 1.000000 | 0.000342
2 | 0.996848 | 0.000342 | 1.000000
我不确定默认数字索引是否在df中传达了'user_id'的正确和原始顺序。
答案 0 :(得分:0)
已通过Cosine Similarity between 2 Number Lists
选中scipy.spatial.distance.cosine(array1, array2)
我可以用原始索引替换结果中的索引和列
result.index = df.index
result.columns = df.index
它们的顺序完全相同