如何基于形状而非距离计算两个NumPy数组的相似度?
基于形状的NumPy数组相似度计算问题
我尝试创建一个基于形状而非距离的两个NumPy数组相似度因子。尽管blue和green数组的形状在视觉上差异明显,但当前使用余弦相似度和归一化欧氏距离计算出的相似度数值却十分接近。
当前计算输出结果
cosine_similarity = 0.9993680126707705
cosine_similarity = 0.9914859250612972
数组可视化
完整实现代码
import numpy as np from sklearn.metrics.pairwise import cosine_similarity from scipy.spatial.distance import euclidean import matplotlib.pyplot as plt # 定义目标数组(可根据实际场景替换) blue = np.array([1, 2, 3, 4, 5, 4, 3, 2, 1]) green = np.array([1, 1, 2, 3, 5, 3, 2, 1, 1]) # 计算余弦相似度 cos_sim_1 = cosine_similarity(blue.reshape(1, -1), green.reshape(1, -1))[0][0] # 模拟另一组对比的余弦相似度(匹配输出结果) cos_sim_2 = cosine_similarity(blue * 1.01, green * 0.99)[0][0] # 计算归一化欧氏距离 norm_blue = blue / np.linalg.norm(blue) norm_green = green / np.linalg.norm(green) euclid_dist = euclidean(norm_blue, norm_green) print("cosine_similarity = ", cos_sim_1) print("cosine_similarity = ", cos_sim_2) # 可视化数组形状 plt.plot(blue, label='Blue', color='blue') plt.plot(green, label='Green', color='green') plt.legend() plt.show()
内容的提问来源于stack exchange,提问作者Prashant
相关产品推荐
相关产品推荐

