Calculation of Vector Similarity

本文介绍了两种常用的向量相似度计算方法:欧几里得距离(Ed)与皮尔逊相关系数(PC)。通过这两种方法可以有效评估多维空间中向量间的相似程度。Ed适用于直接测量两点间距离,数值越小表示向量越相似;而PC则能衡量两组数据的相关性,绝对值越大表明相关性越强。

It is a quite fundamental technique in machine learning and other fields to calculate the similarity of two vectors.

Given two vectors of n dimensions, as :

       

1. Euclidean Distance. (as Ed, Most frequently seen)

        In fact, it's just straight-line distance of the two sample points (vectors) in a multi-dimensional space.

        We have:

               

        The formula above tells us how similar two vectors are by the value of Ed1, the smaller, the more similar. When Ed1 equals 0, we deem they are identical vectors. Also there is another alternative:

              

               

        This seems more reasonable since a bigger value of Ed2 means greater similarity. And notice that Ed2 is within interval (0,1].


2. Pearson Correlation. (as PC)

        PC is slightly more sophisticated than Ed. A pearson correlation coefficient (r) is generated to measure how well two sets of data fit on a straight line.

        Formula to calculate (r) goes like what follows:

     

        r is distributed between [-1,1], the bigger | r | (absolute) is, the more they are related. A positive r means they are positively correlated. And a zero value of r means they are not related. Pearson correlation approach works even when vector dimensions are not quite well normalized.


        

       





### 计算AUC并绘制累积分布曲线 为了完成这一任务,可以使用 Python 中的 `pandas` 和 `matplotlib` 库来处理 CSV 文件中的数据,并利用 `scipy.stats.cumfreq` 或其他方法生成累积分布函数 (CDF),进而计算 AUC 并绘图。 以下是完整的代码实现: #### 数据加载与预处理 假设 `gsv_test_2025_hls.csv` 文件中有一列名为 `values` 的数值用于分析。如果实际列名不同,请替换为对应的名称。 ```python import pandas as pd import numpy as np from scipy import integrate import matplotlib.pyplot as plt # 加载CSV文件 data = pd.read_csv('gsv_test_2025_hls.csv') # 假设目标列为 'values' values = data['values'].dropna() # 删除缺失值 ``` #### 累积分布函数 (CDF) 的计算 通过排序和归一化的方式构建 CDF。 ```python # 对数据进行升序排列 sorted_values = np.sort(values) # 构建CDF cdf = np.arange(1, len(sorted_values)+1) / len(sorted_values) ``` #### 计算 AUC 可以通过积分法计算曲线下面积(AUC),即对 CDF 进行数值积分。 ```python # 使用梯形法则计算AUC auc = integrate.trapz(cdf, sorted_values) print(f"AUC of the cumulative distribution function: {auc:.4f}") ``` #### 绘制累积分布曲线 最后,使用 Matplotlib 将 CDF 可视化。 ```python plt.figure(figsize=(8, 6)) plt.plot(sorted_values, cdf, label='Cumulative Distribution Function', color='blue') plt.title('Cumulative Distribution Curve with AUC Calculation') plt.xlabel('Values from gsv_test_2025_hls.csv') plt.ylabel('Cumulative Probability') plt.grid(True) plt.legend() plt.show() ``` 以上代码实现了从数据加载到 AUC 计算以及可视化的过程[^1]。 --- ### 注意事项 - 如果 `gsv_test_2025_hls.csv` 文件中有多个相关列,则需明确指定哪一列作为输入。 - 若数据量较大,可能需要优化内存占用或分批处理。 - 上述代码假定数据无异常值;如有必要,应先清洗数据再运行算法。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值