1

我是机器学习的新手,之前没有使用过 scikit-learn。我正在做一个项目。作为项目的一部分,我需要训练一种机器学习算法来将一些观察结果分类到不同的类中。我已经处理了传感器的观察结果以产生一些数据。但处理后的数据的问题在于,它是针对不同观察的不同长度的向量。

在此处输入图像描述

这张图片显示了一些数据。绿线是应用高斯滤波器后的原始数据,红线表示对数据的 16 度多项式拟合。第 1 行包含 3 个峰的数据,第 2 行包含 4 个峰的数据,第 3 行包含 5 个峰的数据。我希望能够将数据分类为单独的类。

我目前计划使用多项式的系数作为我的特征向量。第一行很好,但在峰值数量较多的情况下,多项式的拟合效果不佳,可能无法正确分类。我曾尝试使用更高次的多项式,但它会导致峰值数量较少的情况出现异常。仅仅计算峰的数量不能用于分类,因为这只是几个类别的一个子集,分类也将取决于观察到的峰的相对大小和分离,但是在多项式拟合中这个信息不是很清楚更多的峰值。

我想知道有没有

  • 其他一些方法而不是尝试拟合多项式,它可以帮助我生成特征向量来对数据进行分类。
  • 一种在python中可视化高维数据的方法

编辑:

我现在正在使用样条而不是多项式来拟合数据,scipy.interpolate.UnivariateSpline并且它正在生成更好的拟合。我现在可以使用结的位置和样条的系数。但是这些向量的长度不是恒定的,即使重复两次相同的观察也是不同的。有人可以建议一种将其映射到恒定长度向量的方法。

在此处输入图像描述

4

2 回答 2

0

将信号压缩成特征向量的另一种方法是进行 FFT 分析并使用第一个nFFT 系数作为特征。

或者您可以进行加窗 FFT,以便获得一系列系数。

于 2015-06-17T19:37:16.007 回答
0

如果您的问题主要是由于样本数量不同,则插值和重新采样确实是可行的方法。但是,我会使用约束较少的插值技术。如果你有大量的点,即使是线性插值也可以。或者,您可以使用在 scikit learn 中很好地实现的高斯过程回归。您不需要先应用高斯滤波器,因为您使用的是回归。

查看此链接以获取有关如何将 GP 应用于回归的示例: http: //scikit-learn.org/stable/modules/gaussian_process.html

于 2015-06-17T19:40:46.493 回答