【发布时间】:2019-02-14 19:41:06
【问题描述】:
我有两个时间序列数据,A 列和 B 列。
我正在计算 A 列上不同持续时间的滚动移动平均线。 例如 (5,10,15,20)。
我想为这些平均列中的每一个分配权重,以便权重和平均列的总和与列 B 具有最大的相关性。换句话说,如何在 Python 中实现类似 excel 的优化。
请查看示例代码并建议前进的方向。
import pandas as pd
import numpy as np
dates = pd.date_range('20130101', periods=100)
df = pd.DataFrame(np.random.randn(100, 2), index=dates, columns=list('AB'))
df['sma_5']=df['A'].rolling(5).mean()
df['sma_10']=df['A'].rolling(10).mean()
df['sma_15']=df['A'].rolling(15).mean()
df['sma_20']=df['A'].rolling(20).mean()
w=[0.25,0.25,0.25,0.25]
df['B_friend'']=
w[0]*df['sma_5']+w[1]*df['sma_10']+w[2]*df['sma_15']+w[3]*df['sma_20']
需要优化权重“w”以最大化相关性。
df['B'].corr(df['B_friend'])
提前致谢。
【问题讨论】:
标签: python pandas optimization