执行sklearn余弦相似度时如何保留索引名和列名?

时间:2019-05-09 21:18:04

标签: python scikit-learn cosine-similarity

当执行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'的正确和原始顺序

1 个答案:

答案 0 :(得分:0)

已通过Cosine Similarity between 2 Number Lists

选中
scipy.spatial.distance.cosine(array1, array2)

我可以用原始索引替换结果中的索引和列

result.index = df.index
result.columns = df.index

它们的顺序完全相同