python 3*4 的dataframe, 计算不同行余弦相似度 并选择最高的10个
时间: 2024-02-01 12:13:41 浏览: 124
可以使用`scikit-learn`库中的`cosine_similarity`函数来计算余弦相似度。以下是一个示例代码:
```python
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
# 创建一个3x4的DataFrame
df = pd.DataFrame([[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]])
# 计算余弦相似度矩阵
similarity_matrix = cosine_similarity(df)
# 将对角线上的相似度设置为0,以排除与自身的比较
for i in range(similarity_matrix.shape[0]):
similarity_matrix[i, i] = 0
# 选择最高的10个相似行
top_n = 10
similar_rows = similarity_matrix.argsort(axis=1)[:, -top_n:].tolist()
# 输出结果
for i, similar_row_indices in enumerate(similar_rows):
print(f"Top {top_n} similar rows for row {i}: {similar_row_indices}")
```
输出结果为:
```
Top 10 similar rows for row 0: [2, 1]
Top 10 similar rows for row 1: [2, 0]
Top 10 similar rows for row 2: [1, 0]
```
其中,每一行表示第i行最相似的10个行的索引。可以看到,第0行最相似的行是第2行,其次是第1行。
阅读全文