1
0
mirror of https://github.com/microsoft/qlib.git synced 2026-07-10 14:26:56 +08:00
This commit is contained in:
bxdd
2021-01-26 07:32:06 +00:00
parent 06dbd02b99
commit 6a145df87c
11 changed files with 118 additions and 71 deletions

View File

@@ -1,7 +1,6 @@
import numpy as np
import pandas as pd
from qlib.data.dataset.processor import Processor
from qlib.log import TimeInspector
from qlib.data.dataset.utils import fetch_df_by_index
@@ -11,8 +10,9 @@ class HighFreqNorm(Processor):
self.fit_end_time = fit_end_time
def fit(self, df_features):
fetch_df = fetch_df_by_index(df, slice(self.fit_start_time, self.fit_end_time), level="datetime")
del df
print("==============fit==============")
fetch_df = fetch_df_by_index(df_features, slice(self.fit_start_time, self.fit_end_time), level="datetime")
del df_features
df_values = fetch_df.values
names = {
"price": slice(0, 10),
@@ -23,17 +23,18 @@ class HighFreqNorm(Processor):
self.feature_vmax = {}
self.feature_vmin = {}
for name, name_val in names.items():
part_values = df_values[:, name_val]
part_values = df_values[:, name_val].astype(np.float32)
if name == "volume":
df_features.loc(axis=1)[name_val] = np.log1p(part_values)
part_values = np.log1p(part_values)
self.feature_med[name] = np.nanmedian(part_values)
part_values = part_values - self.feature_med # mean, copy
part_values = part_values - self.feature_med[name] # mean, copy
self.feature_std[name] = np.nanmedian(np.absolute(part_values)) * 1.4826 + 1e-12
part_values = part_values / self.feature_std
part_values = part_values / self.feature_std[name]
self.feature_vmax[name] = np.nanmax(part_values)
self.feature_vmin[name] = np.nanmin(part_values)
def __call__(self, df_features):
print("==============call==============")
df_features.set_index("date", append=True, drop=True, inplace=True)
df_values = df_features.values
names = {
@@ -58,13 +59,12 @@ class HighFreqNorm(Processor):
part_values[slice3] = -3.5
# print("start_call_feature_reshape")
idx = df_features.index.droplevel("datetime").drop_duplicates()
idx.set_names(['instrument', 'datetime'], inplace=True)
feat = df_values[:, [0, 1, 2, 3, 4, 10]].reshape(-1, 6 * 240)
feat_1 = df_values[:, [5, 6, 7, 8, 9, 11]].reshape(-1, 6 * 240)
df_new_features = pd.DataFrame(
data=np.concatenate((feat, feat_1), axis=1),
index=idx,
columns=["FEATURE_%d" % i for i in range(12 * 240)],
).sort_index()
return df_new_features