Track inlier-metric params

This commit is contained in:
th0rntwig 2022-09-19 21:23:59 +02:00
parent f5219ba5e6
commit 916281dcce

View File

@ -774,14 +774,21 @@ class FreqaiDataKitchen:
def compute_inlier_metric(self, set_='train') -> None: def compute_inlier_metric(self, set_='train') -> None:
""" """
Compute inlier metric from backwards distance distributions. Compute inlier metric from backwards distance distributions.
This metric defines how well features from a timepoint fit This metric defines how well features from a timepoint fit
into previous timepoints. into previous timepoints.
""" """
def normalise(dataframe: DataFrame) -> DataFrame: def normalise(dataframe: DataFrame, key: str) -> DataFrame:
return (dataframe - dataframe.min()) / (dataframe.max() - dataframe.min()) if set_ == 'train':
min_value = dataframe.min()
max_value = dataframe.max()
self.data[f'{key}_min'] = min_value
self.data[f'{key}_max'] = max_value
else:
min_value = self.data[f'{key}_min']
max_value = self.data[f'{key}_max']
return (dataframe - min_value) / (max_value - min_value)
no_prev_pts = self.freqai_config["feature_parameters"]["inlier_metric_window"] no_prev_pts = self.freqai_config["feature_parameters"]["inlier_metric_window"]
@ -827,8 +834,12 @@ class FreqaiDataKitchen:
inliers = pd.DataFrame(index=distances.index) inliers = pd.DataFrame(index=distances.index)
for key in distances.keys(): for key in distances.keys():
current_distances = distances[key].dropna() current_distances = distances[key].dropna()
current_distances = normalise(current_distances) current_distances = normalise(current_distances, key)
if set_ == 'train':
fit_params = stats.weibull_min.fit(current_distances) fit_params = stats.weibull_min.fit(current_distances)
self.data[f'{key}_fit_params'] = fit_params
else:
fit_params = self.data[f'{key}_fit_params']
quantiles = stats.weibull_min.cdf(current_distances, *fit_params) quantiles = stats.weibull_min.cdf(current_distances, *fit_params)
df_inlier = pd.DataFrame( df_inlier = pd.DataFrame(