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

如何以连续值数组为特征训练模型?适配该类数据的分类器有哪些

问题解决与模型推荐

报错原因

Random Forest这类传统机器学习模型要求输入是二维数值数组(形状为(样本数, 特征数)),但你的数据中每个特征列存储的是一维序列(比如鼻气流列每个单元格是750个数值的数组),导致输入数据维度变成三维,触发ValueError: setting an array element with a sequence错误。

无需大幅丢失信息的解决方案

1. 复合特征工程(适配传统模型)

如果仍想使用Random Forest,可对每个信号序列提取时域+频域复合特征,既保留序列关键信息,又将序列转为固定长度的特征向量:

  • 时域特征:均值、方差、标准差、偏度、峰度、最大值、最小值、四分位数、信号过零率、绝对偏差等
  • 频域特征:FFT变换后的峰值频率、主频率能量占比、小波变换多尺度系数统计量等
    将这些特征拼接后,就能直接输入Random Forest训练。

2. 专门处理序列数据的分类模型

以下模型可直接处理固定长度的序列特征,无需手动压缩信息:

  • 时间序列森林(Time Series Forest)
    专为时间序列分类设计的集成模型,核心逻辑是对序列随机抽取多个区间,计算区间内的统计量(均值、方差、斜率等)作为特征,再用决策树集成训练。它能保留序列的局部时序信息,实现简单,适合快速验证效果。
  • 一维卷积神经网络(1D-CNN)
    擅长捕捉序列的局部模式和空间相关性,可对不同采样率的信号分别搭建CNN分支提取特征,再将分支输出融合后做分类,适合挖掘信号的隐含特征。
  • 循环神经网络(LSTM/GRU)
    专门用于捕捉序列的时间依赖关系,适合处理EEG这类具有时序关联的信号,可通过多分支结构分别处理鼻气流和EEG序列,再融合特征完成分类。
  • Transformer
    依靠自注意力机制捕捉序列的长距离依赖,对EEG这类长序列(6000个点)的全局特征提取效果优异,同样支持多分支处理不同采样率的信号。
  • 隐马尔可夫模型(HMM)
    适合处理具有马尔可夫特性的时序信号,通过学习信号的状态转移规律实现分类,在生理信号分类场景中应用广泛。

时间序列森林快速实现示例

from sktime.classification.compose import ColumnEnsembleClassifier
from sktime.classification.interval_based import TimeSeriesForestClassifier
import pandas as pd
import numpy as np

# 假设df是你的原始DataFrame
# 整理输入数据:每个样本为包含两个序列的数组
X = [np.vstack([np.array(row['Nasal Airflow 25hz']), np.array(row['EEG 200hz'])]) 
     for idx, row in df.iterrows()]
y = df['Target (0,1,2)'].values

# 为每个信号列单独构建时间序列森林分类器,再集成
clf = ColumnEnsembleClassifier(
    estimators=[
        ("nasal_tsf", TimeSeriesForestClassifier(n_estimators=100), 0),
        ("eeg_tsf", TimeSeriesForestClassifier(n_estimators=100), 1),
    ]
)

# 训练与预测
clf.fit(X, y)
y_pred = clf.predict(X)

内容的提问来源于stack exchange,提问作者JOHN EDWARD BINAY

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:25:25