| 12 | TEST_INST = "SH600519" |
| 13 | |
| 14 | def test_MinMaxNorm(self): |
| 15 | def normalize(df): |
| 16 | min_val = np.nanmin(df.values, axis=0) |
| 17 | max_val = np.nanmax(df.values, axis=0) |
| 18 | ignore = min_val == max_val |
| 19 | for _i, _con in enumerate(ignore): |
| 20 | if _con: |
| 21 | max_val[_i] = 1 |
| 22 | min_val[_i] = 0 |
| 23 | df.loc(axis=1)[df.columns] = (df.values - min_val) / (max_val - min_val) |
| 24 | return df |
| 25 | |
| 26 | origin_df = D.features([self.TEST_INST], ["$high", "$open", "$low", "$close"]).tail(10) |
| 27 | origin_df["test"] = 0 |
| 28 | df = origin_df.copy() |
| 29 | mmn = MinMaxNorm(fields_group=None, fit_start_time="2021-05-31", fit_end_time="2021-06-11") |
| 30 | mmn.fit(df) |
| 31 | mmn.__call__(df) |
| 32 | origin_df = normalize(origin_df) |
| 33 | assert (df == origin_df).all().all() |
| 34 | |
| 35 | def test_ZScoreNorm(self): |
| 36 | def normalize(df): |