| 33 | assert (df == origin_df).all().all() |
| 34 | |
| 35 | def test_ZScoreNorm(self): |
| 36 | def normalize(df): |
| 37 | mean_train = np.nanmean(df.values, axis=0) |
| 38 | std_train = np.nanstd(df.values, axis=0) |
| 39 | ignore = std_train == 0 |
| 40 | for _i, _con in enumerate(ignore): |
| 41 | if _con: |
| 42 | std_train[_i] = 1 |
| 43 | mean_train[_i] = 0 |
| 44 | df.loc(axis=1)[df.columns] = (df.values - mean_train) / std_train |
| 45 | return df |
| 46 | |
| 47 | origin_df = D.features([self.TEST_INST], ["$high", "$open", "$low", "$close"]).tail(10) |
| 48 | origin_df["test"] = 0 |
| 49 | df = origin_df.copy() |
| 50 | zsn = ZScoreNorm(fields_group=None, fit_start_time="2021-05-31", fit_end_time="2021-06-11") |
| 51 | zsn.fit(df) |
| 52 | zsn.__call__(df) |
| 53 | origin_df = normalize(origin_df) |
| 54 | assert (df == origin_df).all().all() |
| 55 | |
| 56 | def test_CSZFillna(self): |
| 57 | origin_df = D.features(D.instruments(market="csi300"), fields=["$high", "$open", "$low", "$close"]) |