如何用PCA对tsfresh提取的高维时序特征进行有效降维

花韻仙語

花韻仙語

2026-08-03

307人浏览

原创

如何用PCA对tsfresh提取的高维时序特征进行有效降维

本文探讨在使用tsfresh从多传感器气体时间序列中提取数百维特征后,是否可直接应用pca降维、高维特征对pca可视化与解释性的影响,并提供可执行的python实践建议与评估策略。

本文探讨在使用tsfresh从多传感器气体时间序列中提取数百维特征后,是否可直接应用pca降维、高维特征对pca可视化与解释性的影响,并提供可执行的python实践建议与评估策略。

在气体传感分析中,15个传感器产生的时序数据经tsfresh自动提取后,常生成约800个统计、频域、时域及信息熵类特征(如fft_coefficient__attr_"real"__coeff_5、mean_change_of_abs_change等)。面对如此高维特征空间,直接应用PCA不仅是可行的,而且是实践中广泛采用的标准化预处理步骤——PCA本就是为应对“特征远多于样本”或“冗余特征显著”的场景而设计的

不过,需注意两点关键前提:
数据需中心化且尺度一致:tsfresh输出的特征量纲差异极大(如电阻值vs.傅里叶系数),务必在PCA前进行标准化(StandardScaler),否则方差主导的主成分将严重偏向数值量级大的特征;
避免“维度诅咒”下的过拟合风险:若样本量(如不同气体样本数)远小于特征数(如仅50个样本 vs. 800特征),PCA虽能压缩维度,但前几主成分的稳定性可能下降。此时建议先通过tsfresh.select_features()进行基于相关性的特征筛选(例如保留与目标标签相关性p

以下为完整可复现流程示例:

SolidPoint
SolidPoint

Youtube视频总结器,快速将Youtube长视频压缩成文字摘要

下载
from tsfresh import extract_features, select_features
from tsfresh.utilities.dataframe_functions import impute
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.metrics import silhouette_score
import numpy as np

# 1. 提取全部特征(含缺失值处理)
extracted_features = extract_features(
    joined_dfs_final, 
    column_id="id", 
    column_sort="time",
    impute_function=impute  # 自动填充NaN
)

# 2. (可选)按目标变量筛选显著特征(若有标签y)
# y = ... # 如气体类别标签
# extracted_features = select_features(extracted_features, y, ml_task='classification')

# 3. 标准化 + PCA
scaler = StandardScaler()
X_scaled = scaler.fit_transform(extracted_features.fillna(0))  # 填充剩余NaN

pca = PCA(n_components=0.95)  # 保留95%累计方差
X_pca = pca.fit_transform(X_scaled)

print(f"原始特征数: {X_scaled.shape[1]} → PCA后维度: {X_pca.shape[1]}")
print(f"前2主成分解释方差比: {pca.explained_variance_ratio_[:2].sum():.3f}")

# 4. 可视化与评估
import matplotlib.pyplot as plt
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='tab10', alpha=0.7)
plt.xlabel(f'PC1 ({pca.explained_variance_ratio_[0]:.2%})')
plt.ylabel(f'PC2 ({pca.explained_variance_ratio_[1]:.2%})')
plt.title('PCA Projection of tsfresh Features')
plt.show()

# 若用于聚类,用轮廓系数评估分群质量
if len(np.unique(y)) > 1:
    score = silhouette_score(X_pca[:, :2], y)
    print(f"2D PCA silhouette score: {score:.3f}")

重要提醒

  • 不要仅依赖PCA散点图判断分离效果——它仅展示前两个主成分,可能掩盖高维结构。建议结合pca.explained_variance_ratio_曲线,确认累计方差≥85%所需的最小维度;
  • 若目标是分类而非探索性分析,可尝试PCA + SVC管道并交叉验证,对比“全特征vs. PCA降维后”的准确率变化,以实证方式验证降维价值;
  • tsfresh的feature_extraction.settings.from_columns()支持自定义精简特征集(如仅启用["mean", "std", "min", "max"]),从源头控制维度,往往比事后PCA更高效。

总之,大胆应用PCA,但务必辅以标准化、方差诊断与下游任务验证——这既是工程实践的稳健路径,也是理解高维时序特征内在结构的关键一步。

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1104

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

2047

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1184

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

8589

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

1453

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

1504

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

860

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

530

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1087

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
极客学院Python视频教程
极客学院Python视频教程

共67课时 | 25万人学习

中谷教育Python视频教程
中谷教育Python视频教程

共38课时 | 9.1万人学习