更改 NumPy 的 FFT 的起点
Change starting point for NumPy's FFT
我在使用 NumPy 的 FFT 时遇到了问题。我不希望曲线像图像中显示的那样在最后向上移动。几乎就像钉在了股价的平均价上。
close_fft = np.fft.fft(np.asarray(data_FT['Adj Close'].tolist()))
fft_df = pd.DataFrame({'fft':close_fft})
fft_df['absolute'] = fft_df['fft'].apply(lambda x: np.abs(x))
fft_df['angle'] = fft_df['fft'].apply(lambda x: np.angle(x))
plt.figure(figsize=(14, 7), dpi=100)
fft_list = np.asarray(fft_df['fft'].tolist())
for num_ in [3, 6, 9, 100]:
fft_list_m10= np.copy(fft_list); fft_list_m10[num_:-num_]=0
plt.plot(np.fft.ifft(fft_list_m10), label='Fourier transform with {} components'.format(num_))
plt.plot(data_FT['GS'], label='Real')
plt.xlabel('Days')
plt.ylabel('USD')
plt.title('Figure 3: Goldman Sachs (close) stock prices & Fourier transforms')
plt.legend()
plt.show()
这给出了以下情节:
如您所见,无论原始价格如何,曲线都会跳到起点。我正在关注的原始教程在这里:
https://pythonawesome.com/using-the-latest-advancements-in-ai-to-predict-stock-market-movements/
FFT的基向量都是圆形的,因此基向量的数量减少不能轻易表示数组的末端和开始之间的尖锐的不连续性。您可以尝试通过在每一端镜像数据来消除一些跳跃,and/or 通过在 FFT 之前对数据进行去趋势化以减少一些不连续性。
已添加:
DCT方法是简单地复制数据及其镜像(例如以相反的顺序)并使用双倍长度的FFT。处理后丢弃多余的样品。
去趋势方法可以通过使用线性趋势来完成,或者可以使用非常低阶多项式的线性回归拟合来完成。减去拟合趋势,然后减去 FFT 并进行处理。然后在处理后根据需要添加拟合趋势线。
我在使用 NumPy 的 FFT 时遇到了问题。我不希望曲线像图像中显示的那样在最后向上移动。几乎就像钉在了股价的平均价上。
close_fft = np.fft.fft(np.asarray(data_FT['Adj Close'].tolist()))
fft_df = pd.DataFrame({'fft':close_fft})
fft_df['absolute'] = fft_df['fft'].apply(lambda x: np.abs(x))
fft_df['angle'] = fft_df['fft'].apply(lambda x: np.angle(x))
plt.figure(figsize=(14, 7), dpi=100)
fft_list = np.asarray(fft_df['fft'].tolist())
for num_ in [3, 6, 9, 100]:
fft_list_m10= np.copy(fft_list); fft_list_m10[num_:-num_]=0
plt.plot(np.fft.ifft(fft_list_m10), label='Fourier transform with {} components'.format(num_))
plt.plot(data_FT['GS'], label='Real')
plt.xlabel('Days')
plt.ylabel('USD')
plt.title('Figure 3: Goldman Sachs (close) stock prices & Fourier transforms')
plt.legend()
plt.show()
这给出了以下情节:
如您所见,无论原始价格如何,曲线都会跳到起点。我正在关注的原始教程在这里: https://pythonawesome.com/using-the-latest-advancements-in-ai-to-predict-stock-market-movements/
FFT的基向量都是圆形的,因此基向量的数量减少不能轻易表示数组的末端和开始之间的尖锐的不连续性。您可以尝试通过在每一端镜像数据来消除一些跳跃,and/or 通过在 FFT 之前对数据进行去趋势化以减少一些不连续性。
已添加:
DCT方法是简单地复制数据及其镜像(例如以相反的顺序)并使用双倍长度的FFT。处理后丢弃多余的样品。
去趋势方法可以通过使用线性趋势来完成,或者可以使用非常低阶多项式的线性回归拟合来完成。减去拟合趋势,然后减去 FFT 并进行处理。然后在处理后根据需要添加拟合趋势线。