python - 多列值的余弦相似度
问题描述
id size numberOfPlants balcony available publicTransport
0 1191 3 0 1 1
1 3251 2 1 0 0
2 1641 1 1 1 0
3 2133 3 0 0 1
我有一个包含多个列值的数据集,其中每一行代表一个对象。我想计算所有行之间的余弦相似度,以便我考虑所有因素,大小,numberOfPlants,阳台(布尔),可用(布尔)和公共交通(布尔)具有相等的权重。如果我输入 a id
,我想取回id
看起来最相似的行中的 an 。如何在这里计算余弦相似度?
解决方案
这应该可以解决成对余弦相似性的问题(这里我假设您已经使用潜在的 NaN 进行了三角运算):
from sklearn.metrics.pairwise import cosine_similarity
similarity = cosine_similarity(df)
print(similarity)
示例 df:
id size numberOfPlants balcony available publicTransport
0 1 3 1 0 1 1
1 23 4 2 4 0 2
2 3 5 2 5 1 3
3 4 6 2 76 3 4
4 5 7 34 4 4 5
5 6 8 5 2 5 6
6 4 4 6 1 6 4
然后上面的代码返回
[[1. 0.45345772 0.77907297 0.11234465 0.53344315 0.92557018
0.80683665]
[0.45345772 1. 0.5838878 0.23664101 0.276951 0.60827093
0.50306617]
[0.77907297 0.5838878 1. 0.67443414 0.51221106 0.85759678
0.71288699]
[0.11234465 0.23664101 0.67443414 1. 0.16973016 0.25879044
0.19243529]
[0.53344315 0.276951 0.51221106 0.16973016 1. 0.63498516
0.76022001]
[0.92557018 0.60827093 0.85759678 0.25879044 0.63498516 1.
0.93652389]
[0.80683665 0.50306617 0.71288699 0.19243529 0.76022001 0.93652389
1. ]]
推荐阅读
- ios - 使用 URLSession downloadTask 在设备上下载数据后如何获取/打印数据?
- sql-server - SQL Server:存储过程不工作,但在存储过程之外工作
- c - 编译C程序的麻烦
- ios - Swift -Firebase 循环成本
- google-chrome - 在 Laravel Dusk Stripe 测试中,我该如何修复“在 W3C 合规模式下,框架必须是 WebDriverElement 的实例、整数或空值”
- .net - Rider - 如何调试 lambda 表达式中异步方法的返回值?
- ruby - 如何在 Ruby 中将 excelsheet 转换为 Hashmap?
- mongodb - 删除嵌套组中的重复项
- c# - .NET CORE MVC 中的可空日期时间
- html - 使用外来词建议的 HTML 输入