我的数据集有2000个属性和200个样本。我需要减少它的尺寸。为此,我尝试使用傅立叶变换作为降维。当我输入数据作为输入时,傅立叶变换将返回离散傅立叶变换。但是我不知道如何使用它进行降维。
from scipy.fftpack import fft
import panda as pd
price = pd.read_csv(priceFile(), sep=",")
transformed = fft(price )
能帮我吗?
答案 0 :(得分:0)
如果您的样本都是一个时间序列,那么傅里叶变换最适合。如果是,则可以从trainDataSet = np.array([[0.25,0.25,1,1],[0,0,1,1],[0.25,0.25,1,1]])
trainLabel = np.array([[0,1],[0,1],[1,0]])
中提取每个样本的频域特征。以下列出了您可以考虑的时域和频域常见功能(reference):
答案 1 :(得分:0)
假设您有一个包含 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