You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对比两人运动数据时间序列图表并评估动作复制相似度

运动数据对比:自动绘图与相似度评估

一、自动生成每列独立时间序列图

用matplotlib循环遍历两个DataFrame的每一列,为每个身体部位的坐标生成独立对比图表:

import pandas as pd
import matplotlib.pyplot as plt

# 读取并预处理数据
fp = pd.read_csv("first_person.csv")
sp = pd.read_csv("second_person.csv")
fp = fp.iloc[:, 1:]
sp = sp.iloc[:, 1:]

# 遍历所有身体部位列
for col in fp.columns:
    # 创建独立画布
    plt.figure(figsize=(10, 6))
    # 绘制两人的时间序列曲线
    plt.plot(fp[col], label='人员1', color='blue')
    plt.plot(sp[col], label='人员2', color='orange', linestyle='--')
    # 设置图表属性
    plt.title(f'{col} 动作序列对比')
    plt.xlabel('时间步')
    plt.ylabel('坐标值')
    plt.legend()
    plt.grid(True)
    # 可选:将图表保存到本地
    # plt.savefig(f'{col}_comparison.png')
    plt.show()
    # 关闭画布释放内存
    plt.close()

这段代码会为每个身体部位(如LEFT_SHOULDER_Y)生成单独的对比图,避免图表重叠,方便逐个查看动作细节差异。

二、动作复制相似度评估方法

1. 皮尔逊相关系数

衡量两个时间序列的线性相关程度,取值范围[-1,1],越接近1说明线性相似度越高:

# 计算每列的皮尔逊相关系数
corr_results = pd.DataFrame({
    '身体部位': fp.columns,
    '相关系数': [fp[col].corr(sp[col]) for col in fp.columns]
})
print(corr_results)

2. 动态时间规整(DTW)

适合处理动作快慢不一致的时间序列,通过最优匹配计算序列距离,距离越小相似度越高:

先安装依赖:pip install fastdtw

from fastdtw import fastdtw
from scipy.spatial.distance import euclidean

# 计算每列的DTW距离
dtw_results = []
for col in fp.columns:
    distance, _ = fastdtw(fp[col].values, sp[col].values, dist=euclidean)
    dtw_results.append({'身体部位': col, 'DTW距离': distance})

dtw_df = pd.DataFrame(dtw_results)
print(dtw_df)

3. 均方误差(MSE)

衡量两个序列的数值差异,值越小说明动作复制越精准:

mse_results = pd.DataFrame({
    '身体部位': fp.columns,
    '均方误差': [(fp[col] - sp[col])**2.mean() for col in fp.columns]
})
print(mse_results)

4. 余弦相似度

从向量角度衡量序列相似性,取值范围[-1,1],越接近1相似度越高:

from sklearn.metrics.pairwise import cosine_similarity

cosine_results = []
for col in fp.columns:
    fp_vec = fp[col].values.reshape(1, -1)
    sp_vec = sp[col].values.reshape(1, -1)
    sim = cosine_similarity(fp_vec, sp_vec)[0][0]
    cosine_results.append({'身体部位': col, '余弦相似度': sim})

cosine_df = pd.DataFrame(cosine_results)
print(cosine_df)

可以结合多种指标综合评估,比如对每个部位的相似度打分后取平均,得到整体动作复制的相似度水平。

内容的提问来源于stack exchange,提问作者pavan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:15:44