我有一个 Dataframe ,看起来像这样:
api_spec_id label Paths_modified Tags_modified Endpoints_added
933 803.0 minor 8.0 3.0 6
934 803.0 patch 0.0 4.0 2
935 803.0 patch 3.0 1.0 0
938 803.0 patch 10.0 0.0 4
939 803.0 patch 3.0 5.0 1
940 803.0 patch 6.0 0.0 0
942 803.0 patch 0.0 6.0 2
946 803.0 patch 3.0 2.0 3
947 803.0 patch 0.0 0.0 1
我想计算每个连续行之间的行余弦相似度。 Dataframe 已经在api_spec_id
和date
上排序。
预期输出应该如下所示(值不精确):
api_spec_id label Paths_modified Tags_modified Endpoints_added Distance
933 803.0 minor 8.0 3.0 6 ...
934 803.0 patch 0.0 4.0 2 1.00234
935 803.0 patch 3.0 1.0 0
938 803.0 patch 10.0 0.0 4
939 803.0 patch 3.0 5.0 1
940 803.0 patch 6.0 0.0 0
942 803.0 patch 0.0 6.0 2
946 803.0 patch 3.0 2.0 3
947 803.0 patch 0.0 0.0 1
我尝试在stack overflow中查看这里的解决方案,但是在所有情况下的用例似乎都有点不同。我有更多的功能,总共大约32个,我想考虑所有这些功能列(修改的路径,修改的标签和上面df中添加的端点是一些功能的示例),并计算每行的距离度量。
这是我所能想到的,但它没有达到目的:
df = pd.DataFrame(np.random.randint(0, 5, (3, 5)), columns=['id', 'commit_date', 'feature1', 'feature2', 'feature3'])
similarity_df = df.iloc[:, 2:].apply(lambda x: cosine_similarity([x], df.iloc[:, 2:])[0], axis=1)
有没有人对我如何继续这件事有什么建议?
1条答案
按热度按时间7fyelxc51#
这可以在没有
apply
的情况下完成(更快):