程式
如何將各種指標正規化為一列?
我看過這個影片,它討論瞭如何將不同的指標壓縮成一個罪
https://www.youtube.com/watch?v=sDu6CudKa0Q
我試圖通過這種方式做同樣的事情:
data_hist['sma10'] = talib.SMA(data_hist['close'].values, 10) data_hist['difsma'] = data_hist['close'] - data_hist['sma10'] data_hist['cci10'] = talib.CCI(data_hist['high'].values, data_hist['low'].values, data_hist['close'].values, 10) data_hist['mom5'] = talib.MOM(data_hist['close'].values, 5) data_hist.dropna(inplace=True) cols = ['cci10', 'mom5', 'difsma'] data_hist['norm'] = ( data_hist[cols].sum(axis=1) - data_hist[cols].mean(axis=1) ) / data_hist[cols].std(axis=1)
但這是輸出數據的一個例子(它不在 -1 和 1 之間……)
2013-09-11 00:00:00+00:00 -1.557247 2013-09-12 00:00:00+00:00 -1.686368 2013-09-13 00:00:00+00:00 -2.160459 2013-09-16 00:00:00+00:00 -2.805381 2013-09-17 00:00:00+00:00 -2.770916 2013-09-18 00:00:00+00:00 -1.726371 2013-09-19 00:00:00+00:00 -1.610760 2013-09-20 00:00:00+00:00 -1.645410 2013-09-23 00:00:00+00:00 2.143846 2013-09-24 00:00:00+00:00 1.863802 2013-09-25 00:00:00+00:00 1.847545 2013-09-26 00:00:00+00:00 1.956981 2013-09-27 00:00:00+00:00 2.507031 2013-09-30 00:00:00+00:00 -0.856816 2013-10-01 00:00:00+00:00 1.422277 2013-10-02 00:00:00+00:00 1.604809
我錯過了什麼?將各種指標壓縮在單個列中的任何替代方法?
規範化的數據不應該在 $ [-1,1] $ ,但它們應該以 0 為中心(因為您減去樣本的平均值),並且值從 0 開始分佈,使其在不同的變數大小之間具有可比性(因為您除以標準偏差樣本)。
一個簡單的例子是假設你比較兩個隨機樣本 $ X $ 和 $ Y=7 \cdot X $ . 看到這些點可能有點“困難” $ X $ 和 $ Y $ 實際上,它們以相同的方式分佈,但對於比例因子,只需查看值即可。
但正規化的數據會顯示它們實際上是完全相同的:
$$ X_\text{normalized} = \frac{X-\mu_X}{\sigma_X} $$ $$ \begin{align} Y_\text{normalized} &= \frac{Y-\mu_Y}{\sigma_Y} \ &= \frac{7X-7\mu_X}{7\sigma_X} \ &= \frac{X-\mu_X}{\sigma_X} \ & = X_\text{normalized} \end{align} $$ This, however, does not imply it will be contained between -1 and 1.