【问题标题】:fourier transformation as a dimensional reduction technique in python傅里叶变换作为python中的降维技术
【发布时间】:2018-10-11 18:34:47
【问题描述】:

我的数据集有 2000 个属性和 200 个样本。我需要减少它的维度。为此,我尝试使用傅立叶变换作为降维方法。当我将数据作为输入提供时,傅立叶变换会返回离散傅立叶变换。但我不知道如何使用它进行降维。

from scipy.fftpack import fft
import panda as pd

price = pd.read_csv(priceFile(), sep=",")
transformed = fft(price )

你能帮帮我吗?

【问题讨论】:

  • 这与编程关系不大,与 Python 关系更小。但一般来说,通过 fft 降低维度需要数据具有某些属性,例如强低频分量(即样本之间的缓慢变化)。在这种情况下,有可能在变换后只保留有限数量的 fft bin,而其他接近零的 bin 则被丢弃。
  • 改用 PCA。

标签: python fft dimensionality-reduction


【解决方案1】:

如果您的样本都是时间序列,则傅里叶变换最适合。如果是,您可以从transformed 中提取每个样本的频域特征。以下是您可以考虑的时域和频域常见特征列表 (reference):

【讨论】:

    【解决方案2】:

    假设您有一个包含 2000 个属性和 200 个样本的 Pandas 数据框:

    import numpy as np
    df = pd.DataFrame(np.random.randint(0,100,size=(200, 2000)))
    

    要使用 scipy 降低维度,您可以通过首先设置所需的维数 (n_dimensions) 并调用 scipy 函数 (fft)。

    首先我们调用函数并将其定义为fft

    from scipy.fftpack import fft    
    

    然后我们设置维度的数量,在这种情况下我们将分配 1 个维度

    n_dimensions = 1
    

    然后我们调用函数,我们首先添加我们的数据框和维数。

    transformed_data = fft(df,n=n_dimensions)
    

    如果我们想处理实数,你可以转换数组

    df = df.real
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      • 2018-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多