fixes
This commit is contained in:
@@ -0,0 +1,167 @@
|
||||
import os
|
||||
from functools import partial
|
||||
import math
|
||||
|
||||
import torch
|
||||
from torch import nn
|
||||
import numpy as np
|
||||
|
||||
from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler
|
||||
from torch.optim.lr_scheduler import OneCycleLR
|
||||
from torch.optim import AdamW
|
||||
|
||||
from data_analysis.models.ov_detection.config import model_config
|
||||
from utils.feature_functions import *
|
||||
from utils.loss_functions import weighted_bce_loss_fn
|
||||
from utils.training_utils import collate
|
||||
|
||||
from vsm_datascience_common import constants
|
||||
|
||||
feature_config = {
|
||||
"feature_set_name": "full_feature_set",
|
||||
"filter_criteria": {
|
||||
"measurements.length": {
|
||||
"$gt": constants.MEASUREMENTS_PER_DAY * 10,
|
||||
"$lt": constants.MEASUREMENTS_PER_DAY * 150
|
||||
},
|
||||
"ends_at": {
|
||||
"$exists": True,
|
||||
"$ne": None
|
||||
},
|
||||
"$and": [
|
||||
{"measurements.values": {"$not": {"$elemMatch": {"$lt": 35}}}},
|
||||
{"measurements.values": {"$not": {"$elemMatch": {"$gt": 43}}}}
|
||||
]
|
||||
},
|
||||
"augmentation": {
|
||||
"use_augmentation": True,
|
||||
"max_lookback": 4,
|
||||
},
|
||||
"feature_sets": [
|
||||
"static_categorical_features",
|
||||
"static_continuous_features",
|
||||
"known_categorical_features",
|
||||
"known_continuous_features",
|
||||
"observed_categorical_features",
|
||||
"observed_continuous_features",
|
||||
"target_features"
|
||||
],
|
||||
"static_categorical_features": [
|
||||
],
|
||||
"static_continuous_features": [
|
||||
{
|
||||
"name": "average_cycle_length",
|
||||
"fn": get_cycle_length_stats,
|
||||
"scaler": RobustScaler
|
||||
},
|
||||
{
|
||||
"name": "average_ovulation_day",
|
||||
"fn": get_average_ovulation_day,
|
||||
"scaler": RobustScaler
|
||||
},
|
||||
{
|
||||
"name": "ovulation_std",
|
||||
"fn": get_ovulation_std,
|
||||
"scaler": StandardScaler
|
||||
},
|
||||
{
|
||||
"name": "biphasic_fraction",
|
||||
"fn": get_biphasic_fraction,
|
||||
"scaler": MinMaxScaler
|
||||
},
|
||||
{
|
||||
"name": "num_cycles",
|
||||
"fn": get_num_cycles,
|
||||
"scaler": RobustScaler
|
||||
},
|
||||
{
|
||||
"name": "temperature_averages",
|
||||
"fn": get_average_temperatures,
|
||||
"scaler": StandardScaler
|
||||
}
|
||||
],
|
||||
"known_categorical_features": [
|
||||
],
|
||||
"known_continuous_features": [
|
||||
{
|
||||
"name": "hours_from_start",
|
||||
"fn": partial(get_hours_from_start, shift=0),
|
||||
"scaler": MinMaxScaler,
|
||||
"accumulation_fn": np.max
|
||||
},
|
||||
{
|
||||
"name": "hour_of_day",
|
||||
"fn": partial(get_hour_of_day_encoded, shift=0),
|
||||
"scaler": None,
|
||||
"accumulation_fn": np.max
|
||||
},
|
||||
{
|
||||
"name": "day_of_week",
|
||||
"fn": partial(get_day_of_week_encoded, shift=0),
|
||||
"scaler": None,
|
||||
"accumulation_fn": np.max
|
||||
},
|
||||
{
|
||||
"name": "month_of_year",
|
||||
"fn": partial(get_month_of_year_encoded, shift=0),
|
||||
"scaler": None,
|
||||
"accumulation_fn": np.max
|
||||
}
|
||||
],
|
||||
"observed_categorical_features": [
|
||||
],
|
||||
"observed_continuous_features": [
|
||||
{
|
||||
"name": "temperature",
|
||||
"fn": partial(get_temperature, shift=0),
|
||||
"scaler": StandardScaler
|
||||
},
|
||||
{
|
||||
"name": "rolling_average_temperature",
|
||||
"fn": partial(get_rolling_average_with_padding, shift=0),
|
||||
"scaler": StandardScaler
|
||||
},
|
||||
{
|
||||
"name": "rolling_window_temperature_min",
|
||||
"fn": partial(get_window_fn, window_size=constants.MEASUREMENTS_PER_DAY, fn=partial(np.min, axis=1)),
|
||||
"scaler": StandardScaler
|
||||
},
|
||||
{
|
||||
"name": "rolling_window_temperature_max",
|
||||
"fn": partial(get_window_fn, window_size=constants.MEASUREMENTS_PER_DAY, fn=partial(np.max, axis=1)),
|
||||
"scaler": StandardScaler
|
||||
},
|
||||
],
|
||||
"target_features": [
|
||||
# {
|
||||
# "name": "fertility_probability",
|
||||
# "fn": partial(get_fertility_probability, shift=0),
|
||||
# "scaler": MinMaxScaler,
|
||||
# "accumulation_fn": np.max
|
||||
# },
|
||||
# {
|
||||
# "name": "ov_over_probability",
|
||||
# "fn": partial(get_ov_over_probability, shift=0),
|
||||
# "scaler": MinMaxScaler,
|
||||
# "accumulation_fn": np.max
|
||||
# },
|
||||
{
|
||||
"name": "days_relative_to_ov",
|
||||
"fn": get_days_relative_to_ov,
|
||||
"scaler": RobustScaler,
|
||||
"accumulation_fn": np.max
|
||||
},
|
||||
{
|
||||
"name": "ov_day",
|
||||
"fn": get_ov_day,
|
||||
"scaler": RobustScaler,
|
||||
"accumulation_fn": np.max
|
||||
},
|
||||
{
|
||||
"name": "is_biphasic",
|
||||
"fn": get_is_biphasic,
|
||||
"scaler": MinMaxScaler,
|
||||
"accumulation_fn": np.max
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user