七种曲线相似度算法及其实现

这篇具有很好参考价值的文章主要介绍了七种曲线相似度算法及其实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

曲线相似度计算方法用于衡量两个或多个曲线之间的相似程度,不同的曲线相似度计算方法适用于不同的数据类型和应用场景。

选择合适的曲线相似度计算方法取决于数据的性质、应用场景以及相似性的定义方式。有些方法适用于时间序列数据,有些则适用于图像、形状等不同类型的数据。了解每种方法的特点和适用场景,可以在具体应用中选择合适的计算方法来衡量曲线之间的相似性。

七种曲线相似度算法的适用场景

  1. 欧几里德距离(Euclidean Distance)
    特点:简单易懂,计算方法直观。
    适用场景:适用于曲线样本数相同的情况,当曲线具有明显的平移和缩放变换时表现较好。

  2. 动态时间规整(Dynamic Time Warping,DTW)
    特点:考虑了时间轴的变化,能够捕捉曲线的形状相似性。对于时间轴缩放和平移具有一定的容忍性。
    适用场景:适用于曲线在时间上存在变换、平移、扭曲等情况,比如语音识别、时间序列数据分析等。

  3. 余弦相似度(Cosine Similarity)
    特点:忽略了曲线的振幅,只关注其方向。适用于振幅不重要的情况。
    适用场景:文本分类、推荐系统中用户兴趣相似性等。

  4. 皮尔逊相关系数(Pearson Correlation Coefficient)
    特点:衡量线性相关性,取值范围在-1到1之间。
    适用场景:适用于评估两个变量之间的线性关系,不仅限于时间序列数据。

  5. 曼哈顿距离(Manhattan Distance)
    特点:考虑了各维度之间的差异,适用于具有多维度的曲线数据。
    适用场景:图像识别、多维时间序列分析等。

  6. 动态核相关(Dynamic Kernel Correlation,DKC)
    特点:将时间序列映射到高维特征空间中,计算相关性。可以捕获非线性关系。
    适用场景:适用于非线性关系较为复杂的时间序列数据。

  7. 平均绝对误差(Mean Absolute Error,MAE)
    特点:衡量实际值和预测值之间的差异。
    适用场景:用于衡量预测模型的精度,例如回归模型的性能评估。

七种曲线相似度算法的计算公式

  1. 欧几里德距离(Euclidean Distance)
    计算两个向量(或曲线)之间的欧几里德距离,即两点之间的直线距离。

    计算公式:
    Euclidean Distance = ∑ i = 1 n ( x i − y i ) 2 \text{Euclidean Distance} = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2} Euclidean Distance=i=1n(xiyi)2

  2. 动态时间规整(Dynamic Time Warping,DTW)
    考虑两个序列之间的最佳匹配,可以允许时间轴的不同步长,捕捉序列之间的相似性。

    计算公式(递归形式):
    DTW ( i , j ) = ∣ x [ i ] − y [ j ] ∣ + min ⁡ ( DTW ( i − 1 , j ) , DTW ( i , j − 1 ) , DTW ( i − 1 , j − 1 ) ) \text{DTW}(i, j) = |x[i] - y[j]| + \min(\text{DTW}(i-1, j), \text{DTW}(i, j-1), \text{DTW}(i-1, j-1)) DTW(i,j)=x[i]y[j]+min(DTW(i1,j),DTW(i,j1),DTW(i1,j1))

  3. 余弦相似度(Cosine Similarity)
    衡量两个向量(或曲线)之间的夹角,而不考虑振幅。

    计算公式:
    Cosine Similarity = ∑ i = 1 n x i ⋅ y i ∑ i = 1 n x i 2 ⋅ ∑ i = 1 n y i 2 \text{Cosine Similarity} = \frac{\sum_{i=1}^{n} x_i \cdot y_i}{\sqrt{\sum_{i=1}^{n} x_i^2} \cdot \sqrt{\sum_{i=1}^{n} y_i^2}} Cosine Similarity=i=1nxi2 i=1nyi2 i=1nxiyi

  4. 皮尔逊相关系数(Pearson Correlation Coefficient)
    衡量两个变量之间的线性关系程度。

    计算公式:
    Pearson Correlation = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 n ( x i − x ˉ ) 2 ⋅ ∑ i = 1 n ( y i − y ˉ ) 2 \text{Pearson Correlation} = \frac{\sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^{n} (x_i - \bar{x})^2} \cdot \sqrt{\sum_{i=1}^{n} (y_i - \bar{y})^2}} Pearson Correlation=i=1n(xixˉ)2 i=1n(yiyˉ)2 i=1n(xixˉ)(yiyˉ)

  5. 曼哈顿距离(Manhattan Distance)
    计算两个向量(或曲线)之间的绝对差值之和。

    计算公式:
    Manhattan Distance = ∑ i = 1 n ∣ x i − y i ∣ \text{Manhattan Distance} = \sum_{i=1}^{n} |x_i - y_i| Manhattan Distance=i=1nxiyi

  6. 动态核相关(Dynamic Kernel Correlation,DKC)
    将时间序列映射到高维特征空间中,计算相关性。

    具体公式根据具体的核函数和映射函数而定,一般表示为 DKC ( x , y ) = ⟨ Φ ( x ) , Φ ( y ) ⟩ \text{DKC}(x, y) = \langle \Phi(x), \Phi(y) \rangle DKC(x,y)=Φ(x),Φ(y)

  7. 平均绝对误差(Mean Absolute Error,MAE)
    衡量实际值和预测值之间的差异的平均值。

    计算公式:
    MAE = 1 n ∑ i = 1 n ∣ x i − y i ∣ \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |x_i - y_i| MAE=n1i=1nxiyi

曲线相似度计算方法的Python实现

只是给出了一个简化实例,没使用任何外部库,仅使用标准库中的基本数学函数。对于一些方法,如动态时间规整(DTW)和动态核相关(DKC),需要进行更详细的数学计算。文章来源地址https://www.toymoban.com/news/detail-680205.html

import numpy as np

# 欧氏距离
euclidean_distance = np.sqrt(np.sum((x - y)**2))


# 动态时间规整(DTW)
def dtw_distance(x, y):
    n, m = len(x), len(y)
    dtw_matrix = np.zeros((n + 1, m + 1))
    
    for i in range(1, n + 1):
        for j in range(1, m + 1):
            cost = abs(x[i - 1] - y[j - 1])
            dtw_matrix[i, j] = cost + min(dtw_matrix[i - 1, j], dtw_matrix[i, j - 1], dtw_matrix[i - 1, j - 1])
    
    return dtw_matrix[n, m]


# 余弦相似度
cosine_similarity = np.dot(x, y) / (np.linalg.norm(x) * np.linalg.norm(y))


# 皮尔逊相关系数
pearson_correlation = np.corrcoef(x, y)[0, 1]


# 曼哈顿距离
manhattan_distance = np.sum(np.abs(x - y))


# 动态核相关(DKC)
def dkc_distance(x, y):
    sigma = 1.0  # 高斯核的带宽
    k_x = np.exp(-np.sum((x - x)**2) / (2 * sigma**2))
    k_y = np.exp(-np.sum((y - y)**2) / (2 * sigma**2))
    dkc_distance = np.dot(k_x, k_y)
    return dkc_distance


# 平均绝对误差(MAE)
mae = np.mean(np.abs(x - y))
print("MAE:", mae)

到了这里,关于七种曲线相似度算法及其实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数值计算方法】曲线拟合与插值:Lagrange插值、Newton插值及其python/C实现

    目录 一、近似表达方式 插值(Interpolation) 拟合(Fitting) 投影(Projection) 二、插值 1. Lagrange插值 Lagrange插值公式 线性插值(n=1) 抛物插值(n=2) python实现 C语言实现 2. Newton插值 python实现 C语言实现         插值、拟合和投影都是常用的近似表达方式,用于对数据或函数进

    2024年02月02日
    浏览(45)
  • 数学建模--时间序列预测模型的七种经典算法的Python实现

    目录 1.开篇版权提示 2.时间序列介绍  3.项目数据处理 4.项目数据划分+可视化 5.时间预测序列经典算法1:朴素法 6.时间预测序列经典算法2: 简单平均法 7.时间预测序列经典算法3:移动平均法 8.时间预测序列经典算法4:简单指数法  9.时间预测序列经典算法5:Holt线性趋势法

    2024年02月10日
    浏览(45)
  • 竞赛项目 深度学习手势识别算法实现 - opencv python

    🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习手势识别算法实现 - opencv python 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/

    2024年02月13日
    浏览(104)
  • 竞赛 python opencv 深度学习 指纹识别算法实现

    🔥 优质竞赛项目系列,今天要分享的是 🚩 python opencv 深度学习 指纹识别算法实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:4分 创新点:4分 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/d

    2024年04月16日
    浏览(73)
  • Python算法:深度优先搜索—DFS(模板及其样例)

    • 沿着一条路径一直搜索下去,在无法搜索时,回退到刚刚访问过的节点。 • 并且每个节点只能访问一次。 • 本质上是持续搜索,遍历了所有可能的情况,必然能得到解。 • 流程是一个树的形式,每次一条路走到黑。 • 目的主要是达到被搜索结构的叶结点直到最后一层

    2024年03月24日
    浏览(49)
  • 图像检索技术研究:深度度量与深度散列在相似性学习中的应用比较与实践 - 使用Python与Jupyter环境

    引言 在计算机视觉领域,图像检索是一个长期存在并持续受到研究者关注的重要话题。随着大数据时代的到来,如何高效、准确地从海量数据中检索到相似的图像成为一个巨大的挑战。传统的检索方法在大数据环境下表现不佳,而深度学习技术的崛起为图像检索带来了新的机

    2024年02月12日
    浏览(44)
  • GIS tips:基于弗雷歇(Frechet)距离的曲线/形状相似度计算方法(python)

    最近在研究线的相似度匹配,自然而然地了解到两个比较好的相似度匹配方法,分别是 弗雷歇距离 和 隐式马尔科夫模型 。本文主要介绍如何通过python实现不同 曲线/形状 之间基于弗雷歇距离的相似度计算。 知乎链接:GIS tips:基于弗雷歇(Frechet)距离的曲线/形状相似度计

    2024年02月05日
    浏览(71)
  • SGD算法的优化特性及其在深度学习中的应用(OptimizationPropertiesandApplicat

    作者:禅与计算机程序设计艺术 SGD(Stochastic Gradient Descent)算法作为深度学习中最常用的优化算法之一,具有较好的全局收敛速度和稳定性。然而,在某些场景下,SGD算法的训练效率和泛化能力仍有待提高。本文将探讨SGD算法的优化特性及其在深度学习中的应用。 引言 1.1

    2024年02月09日
    浏览(40)
  • 计算机竞赛 python+深度学习+opencv实现植物识别算法系统

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的植物识别算法研究与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分 工作量:4分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate Google DeepMind公司研究员与牛津大学计算

    2024年02月12日
    浏览(76)
  • python+深度学习+opencv实现植物识别算法系统 计算机竞赛

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的植物识别算法研究与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分 工作量:4分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate Google DeepMind公司研究员与牛津大学计算

    2024年02月07日
    浏览(86)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包