mirror of
https://github.com/webclinic017/drift.git
synced 2026-07-27 18:57:55 +00:00
a9b05dbd42
* fix(Reporting): use weighted average (with no_of_samples as weights) and only report level-1 OR level-2 model performance * chore(Config): updated sweep config * fix(Reporting): missing import * fix(Evaluation): get_first_valid_return_index can deal with zero valid indexes * fix(Training): increase threshold for skipping assets * fix(DataLoader): target asset should be always the first column
27 lines
832 B
Python
27 lines
832 B
Python
from typing import Literal
|
|
import pandas as pd
|
|
import numpy as np
|
|
|
|
def get_first_valid_return_index(series: pd.Series) -> int:
|
|
double_nested_results = np.where(np.logical_and(series != 0, np.logical_not(np.isnan(series))))
|
|
if len(double_nested_results) == 0:
|
|
return 0
|
|
nested_result = double_nested_results[0]
|
|
if len(nested_result) == 0:
|
|
return 0
|
|
return nested_result[0]
|
|
|
|
def flatten(list_of_lists: list) -> list:
|
|
return [item for sublist in list_of_lists for item in sublist]
|
|
|
|
def weighted_average(df: pd.DataFrame, weights_source: str) -> pd.DataFrame:
|
|
mean_df = df.iloc[:,0]
|
|
weights = df.loc[weights_source]
|
|
|
|
for i, row in df.iterrows():
|
|
if i == weights_source: continue
|
|
mean_df.loc[i] = (row * weights).sum() / df.loc[weights_source].sum()
|
|
|
|
return mean_df
|
|
|