We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
You can continue the conversation there. Go to discussion →
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Issue by martins0n Thursday Jul 06, 2023 at 10:29 GMT Originally opened as tinkoff-ai#1309
As a newbie you can just prompt feature names and model just from general knowledge and get proper pipeline or forecast.
import os import ast import openai from hydra_slayer import get_from_params from etna.auto.pool.utils import fill_template openai.api_key = os.getenv("OPENAI_API_KEY") SYSTEM_CONTEXT = """ Our task to generate pipeline with model and transforms for time series forecasting. All possible models and transforms you is here in ```PROTOCOLS AND DESCRIPTIONS: ...``` section: PROTOCOLS AND DESCRIPTIONS: ``` class PerSegmentModelMixin(ModelForecastingMixin):def __init__(self, base_model: Any): class MultiSegmentModelMixin(ModelForecastingMixin):def __init__(self, base_model: Any): class DeadlineMovingAverageModel(NonPredictionIntervalContextRequiredAbstractModel,):def __init__(self, window: int = 3, seasonality: str = "month"): class SeasonalMovingAverageModel(NonPredictionIntervalContextRequiredAbstractModel,):def __init__(self, window: int = 5, seasonality: int = 7): class SimpleExpSmoothingModel(PerSegmentModelMixin,NonPredictionIntervalContextIgnorantModelMixin,NonPredictionIntervalContextIgnorantAbstractModel,):def __init__(self,initialization_method: str = "estimated",initial_level: Optional[float] = None,smoothing_level: Optional[float] = None,**fit_kwargs,): class HoltWintersModel(PerSegmentModelMixin,NonPredictionIntervalContextIgnorantModelMixin,NonPredictionIntervalContextIgnorantAbstractModel,):def __init__(self,trend: Optional[str] = None,damped_trend: bool = False,seasonal: Optional[str] = None,seasonal_periods: Optional[int] = None,initialization_method: str = "estimated",initial_level: Optional[float] = None,initial_trend: Optional[float] = None,initial_seasonal: Optional[Sequence[float]] = None,use_boxcox: Union[bool, str, float] = False,bounds: Optional[Dict[str, Tuple[float, float]]] = None,dates: Optional[Sequence[datetime]] = None,freq: Optional[str] = None,missing: str = "none",smoothing_level: Optional[float] = None,smoothing_trend: Optional[float] = None,smoothing_seasonal: Optional[float] = None,damping_trend: Optional[float] = None,**fit_kwargs,): class HoltModel(PerSegmentModelMixin,NonPredictionIntervalContextIgnorantModelMixin,NonPredictionIntervalContextIgnorantAbstractModel,):def __init__(self,exponential: bool = False,damped_trend: bool = False,initialization_method: str = "estimated",initial_level: Optional[float] = None,initial_trend: Optional[float] = None,smoothing_level: Optional[float] = None,smoothing_trend: Optional[float] = None,damping_trend: Optional[float] = None,**fit_kwargs,): class LinearPerSegmentModel(PerSegmentModelMixin,NonPredictionIntervalContextIgnorantModelMixin,NonPredictionIntervalContextIgnorantAbstractModel,):def __init__(self, fit_intercept: bool = True, **kwargs): class LinearMultiSegmentModel(MultiSegmentModelMixin,NonPredictionIntervalContextIgnorantModelMixin,NonPredictionIntervalContextIgnorantAbstractModel,):def __init__(self, fit_intercept: bool = True, **kwargs): class ElasticMultiSegmentModel(MultiSegmentModelMixin,NonPredictionIntervalContextIgnorantModelMixin,NonPredictionIntervalContextIgnorantAbstractModel,):def __init__(self, alpha: float = 1.0, l1_ratio: float = 0.5, fit_intercept: bool = True, **kwargs): class ElasticPerSegmentModel(PerSegmentModelMixin,NonPredictionIntervalContextIgnorantModelMixin,NonPredictionIntervalContextIgnorantAbstractModel,):def __init__(self, alpha: float = 1.0, l1_ratio: float = 0.5, fit_intercept: bool = True, **kwargs): class CatBoostPerSegmentModel(PerSegmentModelMixin,NonPredictionIntervalContextIgnorantModelMixin,NonPredictionIntervalContextIgnorantAbstractModel,):def __init__(self,iterations: Optional[int] = None,depth: Optional[int] = None,learning_rate: Optional[float] = None,logging_level: Optional[str] = "Silent",l2_leaf_reg: Optional[float] = None,thread_count: Optional[int] = None,**kwargs,): class CatBoostMultiSegmentModel(MultiSegmentModelMixin,NonPredictionIntervalContextIgnorantModelMixin,NonPredictionIntervalContextIgnorantAbstractModel,):def __init__(self,iterations: Optional[int] = None,depth: Optional[int] = None,learning_rate: Optional[float] = None,logging_level: Optional[str] = "Silent",l2_leaf_reg: Optional[float] = None,thread_count: Optional[int] = None,**kwargs,): class SARIMAXModel(PerSegmentModelMixin, PredictionIntervalContextIgnorantModelMixin, PredictionIntervalContextIgnorantAbstractModel):def __init__(self,order: Tuple[int, int, int] = (1, 0, 0),seasonal_order: Tuple[int, int, int, int] = (0, 0, 0, 0),trend: Optional[str] = None,measurement_error: bool = False,time_varying_regression: bool = False,mle_regression: bool = True,simple_differencing: bool = False,enforce_stationarity: bool = True,enforce_invertibility: bool = True,hamilton_representation: bool = False,concentrate_scale: bool = False,trend_offset: float = 1,use_exact_diffuse: bool = False,dates: Optional[List[datetime]] = None,freq: Optional[str] = None,missing: str = "none",validate_specification: bool = True,**kwargs,): class MovingAverageModel(SeasonalMovingAverageModel):def __init__(self, window: int = 5): class NaiveModel(SeasonalMovingAverageModel):def __init__(self, lag: int = 1): class ProphetModel(PerSegmentModelMixin, PredictionIntervalContextIgnorantModelMixin, PredictionIntervalContextIgnorantAbstractModel):def __init__(self,growth: str = "linear",changepoints: Optional[List[datetime]] = None,n_changepoints: int = 25,changepoint_range: float = 0.8,yearly_seasonality: Union[str, bool] = "auto",weekly_seasonality: Union[str, bool] = "auto",daily_seasonality: Union[str, bool] = "auto",holidays: Optional[pd.DataFrame] = None,seasonality_mode: str = "additive",seasonality_prior_scale: float = 10.0,holidays_prior_scale: float = 10.0,changepoint_prior_scale: float = 0.05,mcmc_samples: int = 0,interval_width: float = 0.8,uncertainty_samples: Union[int, bool] = 1000,stan_backend: Optional[str] = None,additional_seasonality_params: Iterable[Dict[str, Union[str, float, int]]] = (),): class BATSModel(PerSegmentModelMixin, PredictionIntervalContextIgnorantModelMixin, PredictionIntervalContextIgnorantAbstractModel):def __init__(self,use_box_cox: Optional[bool] = None,box_cox_bounds: Tuple[int, int] = (0, 1),use_trend: Optional[bool] = None,use_damped_trend: Optional[bool] = None,seasonal_periods: Optional[Iterable[int]] = None,use_arma_errors: bool = True,show_warnings: bool = True,n_jobs: Optional[int] = None,multiprocessing_start_method: str = "spawn",context: Optional[ContextInterface] = None,): class TBATSModel(PerSegmentModelMixin, PredictionIntervalContextIgnorantModelMixin, PredictionIntervalContextIgnorantAbstractModel):def __init__(self,use_box_cox: Optional[bool] = None,box_cox_bounds: Tuple[int, int] = (0, 1),use_trend: Optional[bool] = None,use_damped_trend: Optional[bool] = None,seasonal_periods: Optional[Iterable[int]] = None,use_arma_errors: bool = True,show_warnings: bool = True,n_jobs: Optional[int] = None,multiprocessing_start_method: str = "spawn",context: Optional[ContextInterface] = None,): class SklearnPerSegmentModel(PerSegmentModelMixin,NonPredictionIntervalContextIgnorantModelMixin,NonPredictionIntervalContextIgnorantAbstractModel,):def __init__(self, regressor: RegressorMixin): class SklearnMultiSegmentModel(MultiSegmentModelMixin,NonPredictionIntervalContextIgnorantModelMixin,NonPredictionIntervalContextIgnorantAbstractModel,):def __init__(self, regressor: RegressorMixin): class AutoARIMAModel(PerSegmentModelMixin, PredictionIntervalContextIgnorantModelMixin, PredictionIntervalContextIgnorantAbstractModel):def __init__(self,**kwargs,): class DeepBaseNet(DeepAbstractNet, LightningModule):def __init__(self): class DeepBaseModel(DeepBaseAbstractModel, SaveNNMixin, NonPredictionIntervalContextRequiredAbstractModel):def __init__(self,*,net: DeepBaseNet,encoder_length: int,decoder_length: int,train_batch_size: int,test_batch_size: int,trainer_params: Optional[dict],train_dataloader_params: Optional[dict],test_dataloader_params: Optional[dict],val_dataloader_params: Optional[dict],split_params: Optional[dict],): class MLPNet(DeepBaseNet):def __init__(self,input_size: int,hidden_size: List[int],lr: float,loss: "torch.nn.Module",optimizer_params: Optional[dict],) -> None:super().__init__()self.input_size = input_sizeself.hidden_size = hidden_sizeself.lr = lrself.loss = lossself.optimizer_params = {} if optimizer_params is None else optimizer_paramslayers = [nn.Linear(in_features=input_size, out_features=hidden_size[0]), nn.ReLU()]for i in range(1, len(hidden_size)): class MLPModel(DeepBaseModel):def __init__(self,input_size: int,decoder_length: int,hidden_size: List,encoder_length: int = 0,lr: float = 1e-3,loss: Optional["torch.nn.Module"] = None,train_batch_size: int = 16,test_batch_size: int = 16,optimizer_params: Optional[dict] = None,trainer_params: Optional[dict] = None,train_dataloader_params: Optional[dict] = None,test_dataloader_params: Optional[dict] = None,val_dataloader_params: Optional[dict] = None,split_params: Optional[dict] = None,): class PytorchForecastingDatasetBuilder(BaseMixin):def __init__(self,max_encoder_length: int = 30,min_encoder_length: Optional[int] = None,min_prediction_idx: Optional[int] = None,min_prediction_length: Optional[int] = None,max_prediction_length: int = 1,static_categoricals: Optional[List[str]] = None,static_reals: Optional[List[str]] = None,time_varying_known_categoricals: Optional[List[str]] = None,time_varying_known_reals: Optional[List[str]] = None,time_varying_unknown_categoricals: Optional[List[str]] = None,time_varying_unknown_reals: Optional[List[str]] = None,variable_groups: Optional[Dict[str, List[int]]] = None,constant_fill_strategy: Optional[Dict[str, Union[str, float, int, bool]]] = None,allow_missing_timesteps: bool = True,lags: Optional[Dict[str, List[int]]] = None,add_relative_time_idx: bool = True,add_target_scales: bool = True,add_encoder_length: Union[bool, str] = True,target_normalizer: Union[NORMALIZER, str, List[NORMALIZER], Tuple[NORMALIZER]] = "auto",categorical_encoders: Optional[Dict[str, NaNLabelEncoder]] = None,scalers: Optional[Dict[str, Union[StandardScaler, RobustScaler, TorchNormalizer, EncoderNormalizer]]] = None,): class TFTModel(_DeepCopyMixin, PytorchForecastingMixin, SaveNNMixin, PredictionIntervalContextRequiredAbstractModel):def __init__(self,decoder_length: Optional[int] = None,encoder_length: Optional[int] = None,dataset_builder: Optional[PytorchForecastingDatasetBuilder] = None,train_batch_size: int = 64,test_batch_size: int = 64,lr: float = 1e-3,hidden_size: int = 16,lstm_layers: int = 1,attention_head_size: int = 4,dropout: float = 0.1,hidden_continuous_size: int = 8,loss: "MultiHorizonMetric" = None,trainer_params: Optional[Dict[str, Any]] = None,quantiles_kwargs: Optional[Dict[str, Any]] = None,**kwargs,): class RNNNet(DeepBaseNet):def __init__(self,input_size: int,num_layers: int,hidden_size: int,lr: float,loss: "torch.nn.Module",optimizer_params: Optional[dict],) -> None:super().__init__()self.num_layers = num_layersself.input_size = input_sizeself.hidden_size = hidden_sizeself.loss = torch.nn.MSELoss() if loss is None else lossself.rnn = nn.LSTM(num_layers=self.num_layers, hidden_size=self.hidden_size, input_size=self.input_size, batch_first=True)self.projection = nn.Linear(in_features=self.hidden_size, out_features=1)self.lr = lrself.optimizer_params = {} if optimizer_params is None else optimizer_paramsdef forward(self, x: RNNBatch, *args, **kwargs): class RNNModel(DeepBaseModel):def __init__(self,input_size: int,decoder_length: int,encoder_length: int,num_layers: int = 2,hidden_size: int = 16,lr: float = 1e-3,loss: Optional["torch.nn.Module"] = None,train_batch_size: int = 16,test_batch_size: int = 16,optimizer_params: Optional[dict] = None,trainer_params: Optional[dict] = None,train_dataloader_params: Optional[dict] = None,test_dataloader_params: Optional[dict] = None,val_dataloader_params: Optional[dict] = None,split_params: Optional[dict] = None,): class DeepARModel(_DeepCopyMixin, PytorchForecastingMixin, SaveNNMixin, PredictionIntervalContextRequiredAbstractModel):def __init__(self,decoder_length: Optional[int] = None,encoder_length: Optional[int] = None,dataset_builder: Optional[PytorchForecastingDatasetBuilder] = None,train_batch_size: int = 64,test_batch_size: int = 64,lr: float = 1e-3,cell_type: str = "LSTM",hidden_size: int = 10,rnn_layers: int = 2,dropout: float = 0.1,loss: Optional["DistributionLoss"] = None,trainer_params: Optional[Dict[str, Any]] = None,quantiles_kwargs: Optional[Dict[str, Any]] = None,): class LDS(BaseMixin):def __init__(self,emission_coeff: Tensor,# (batch_size, seq_length, latent_dim)transition_coeff: Tensor,# (latent_dim, latent_dim)innovation_coeff: Tensor,# (batch_size, seq_length, latent_dim)noise_std: Tensor,# (batch_size, seq_length, 1)prior_mean: Tensor,# (batch_size, latent_dim)prior_cov: Tensor,# (batch_size, latent_dim, latent_dim)offset: Tensor,# (batch_size, seq_length, 1)seq_length: int,latent_dim: int,): class CompositeSSM(SSM):def __init__(self, seasonal_ssms: List[SeasonalitySSM], nonseasonal_ssm: Optional[Union[LevelSSM, LevelTrendSSM]] = None): class DaylySeasonalitySSM(SeasonalitySSM):def __init__(self): class WeeklySeasonalitySSM(SeasonalitySSM):def __init__(self): class YearlySeasonalitySSM(SeasonalitySSM):def __init__(self): class SeasonalitySSM(LevelSSM):def __init__(self, num_seasons: int, timestamp_transform: Callable[[pd.Timestamp], int]): class DeepStateModel(DeepBaseModel):def __init__(self,ssm: CompositeSSM,input_size: int,encoder_length: int,decoder_length: int,num_layers: int = 1,n_samples: int = 5,lr: float = 1e-3,train_batch_size: int = 16,test_batch_size: int = 16,optimizer_params: Optional[dict] = None,trainer_params: Optional[dict] = None,train_dataloader_params: Optional[dict] = None,test_dataloader_params: Optional[dict] = None,val_dataloader_params: Optional[dict] = None,split_params: Optional[dict] = None,): class DeepStateNet(DeepBaseNet):def __init__(self,ssm: CompositeSSM,input_size: int,num_layers: int,n_samples: int,lr: float,optimizer_params: Optional[dict],): class ReversiblePerSegmentWrapper(PerSegmentWrapper, ReversibleTransform):def __init__(self, transform: OneSegmentTransform, required_features: Union[Literal["all"], List[str]]): class Transform(SaveMixin, BaseMixin):def __init__(self, required_features: Union[Literal["all"], List[str]]): class IrreversibleTransform(Transform):def __init__(self, required_features: Union[Literal["all"], List[str]]): class PerSegmentWrapper(Transform):def __init__(self, transform: OneSegmentTransform, required_features: Union[Literal["all"], List[str]]): class ReversibleTransform(Transform):def __init__(self, required_features: Union[Literal["all"], List[str]]): class IrreversiblePerSegmentWrapper(PerSegmentWrapper, IrreversibleTransform):def __init__(self, transform: OneSegmentTransform, required_features: Union[Literal["all"], List[str]]): class ResampleWithDistributionTransform(IrreversiblePerSegmentWrapper):def __init__(self, in_column: str, distribution_column: str, inplace: bool = True, out_column: Optional[str] = None): class TimeSeriesImputerTransform(ReversibleTransform):def __init__(self,in_column: str = "target",strategy: str = ImputerMode.constant,window: int = -1,seasonality: int = 1,default_value: Optional[float] = None,constant_value: float = 0,): class FilterFeaturesTransform(ReversibleTransform):def __init__(self,include: Optional[Sequence[str]] = None,exclude: Optional[Sequence[str]] = None,return_features: bool = False,): class MRMRFeatureSelectionTransform(BaseFeatureSelectionTransform):def __init__(self,relevance_table: RelevanceTable,top_k: int,features_to_use: Union[List[str], Literal["all"]] = "all",fast_redundancy: bool = False,relevance_aggregation_mode: str = AggregationMode.mean,redundancy_aggregation_mode: str = AggregationMode.mean,atol: float = 1e-10,return_features: bool = False,**relevance_params,): class TreeFeatureSelectionTransform(BaseFeatureSelectionTransform):def __init__(self,model: Union[Literal["catboost"], Literal["random_forest"], TreeBasedRegressor],top_k: int,features_to_use: Union[List[str], Literal["all"]] = "all",return_features: bool = False,): class SegmentGaleShapley(BaseGaleShapley):def __init__(self, name: str, ranked_candidates: List[str]): class GaleShapleyFeatureSelectionTransform(BaseFeatureSelectionTransform):def __init__(self,relevance_table: RelevanceTable,top_k: int,features_to_use: Union[List[str], Literal["all"]] = "all",use_rank: bool = False,return_features: bool = False,**relevance_params,): class BaseGaleShapley(BaseMixin):def __init__(self, name: str, ranked_candidates: List[str]): class GaleShapleyMatcher(BaseMixin):def __init__(self, segments: List[SegmentGaleShapley], features: List[FeatureGaleShapley]): class BaseFeatureSelectionTransform(ReversibleTransform, ABC):def __init__(self, features_to_use: Union[List[str], Literal["all"]] = "all", return_features: bool = False): class LogTransform(ReversibleTransform):def __init__(self, in_column: str, base: int = 10, inplace: bool = True, out_column: Optional[str] = None): class LagTransform(IrreversibleTransform, FutureMixin):def __init__(self, in_column: str, lags: Union[List[int], int], out_column: Optional[str] = None): class ExogShiftTransform(IrreversibleTransform, FutureMixin):def __init__(self, lag: Union[int, Literal["auto"]], horizon: Optional[int] = None): class StandardScalerTransform(SklearnTransform):def __init__(self,in_column: Optional[Union[str, List[str]]] = None,inplace: bool = True,out_column: Optional[str] = None,with_mean: bool = True,with_std: bool = True,mode: Union[TransformMode, str] = "per-segment",): class RobustScalerTransform(SklearnTransform):def __init__(self,in_column: Optional[Union[str, List[str]]] = None,inplace: bool = True,out_column: Optional[str] = None,with_centering: bool = True,with_scaling: bool = True,quantile_range: Tuple[float, float] = (25, 75),unit_variance: bool = False,mode: Union[TransformMode, str] = "per-segment",): class MaxAbsScalerTransform(SklearnTransform):def __init__(self,in_column: Optional[Union[str, List[str]]] = None,inplace: bool = True,out_column: Optional[str] = None,mode: Union[TransformMode, str] = "per-segment",): class MinMaxScalerTransform(SklearnTransform):def __init__(self,in_column: Optional[Union[str, List[str]]] = None,inplace: bool = True,out_column: Optional[str] = None,feature_range: Tuple[float, float] = (0, 1),clip: bool = True,mode: Union[TransformMode, str] = "per-segment",): class DifferencingTransform(ReversibleTransform):def __init__(self,in_column: str,period: int = 1,order: int = 1,inplace: bool = True,out_column: Optional[str] = None,): class LambdaTransform(ReversibleTransform):def __init__(self,in_column: str,transform_func: Callable[[pd.DataFrame], pd.DataFrame],inplace: bool = True,out_column: Optional[str] = None,inverse_transform_func: Optional[Callable[[pd.DataFrame], pd.DataFrame]] = None,): class MADTransform(WindowStatisticsTransform):def __init__(self,in_column: str,window: int,seasonality: int = 1,min_periods: int = 1,fillna: float = 0,out_column: Optional[str] = None,): class MeanTransform(WindowStatisticsTransform):def __init__(self,in_column: str,window: int,seasonality: int = 1,alpha: float = 1,min_periods: int = 1,fillna: float = 0,out_column: Optional[str] = None,): class StdTransform(WindowStatisticsTransform):def __init__(self,in_column: str,window: int,seasonality: int = 1,min_periods: int = 1,fillna: float = 0,out_column: Optional[str] = None,ddof: int = 1,): class WindowStatisticsTransform(IrreversibleTransform, ABC):def __init__(self,in_column: str,out_column: str,window: int,seasonality: int = 1,min_periods: int = 1,fillna: float = 0,**kwargs,): class SumTransform(WindowStatisticsTransform):def __init__(self,in_column: str,window: int,seasonality: int = 1,min_periods: int = 1,fillna: float = 0,out_column: Optional[str] = None,): class MinTransform(WindowStatisticsTransform):def __init__(self,in_column: str,window: int,seasonality: int = 1,min_periods: int = 1,fillna: float = 0,out_column: Optional[str] = None,): class MinMaxDifferenceTransform(WindowStatisticsTransform):def __init__(self,in_column: str,window: int,seasonality: int = 1,min_periods: int = 1,fillna: float = 0,out_column: Optional[str] = None,): class MaxTransform(WindowStatisticsTransform):def __init__(self,in_column: str,window: int,seasonality: int = 1,min_periods: int = 1,fillna: float = 0,out_column: Optional[str] = None,): class MedianTransform(WindowStatisticsTransform):def __init__(self,in_column: str,window: int,seasonality: int = 1,min_periods: int = 1,fillna: float = 0,out_column: Optional[str] = None,): class QuantileTransform(WindowStatisticsTransform):def __init__(self,in_column: str,quantile: float,window: int,seasonality: int = 1,min_periods: int = 1,fillna: float = 0,out_column: Optional[str] = None,): class SklearnTransform(ReversibleTransform):def __init__(self,in_column: Optional[Union[str, List[str]]],out_column: Optional[str],transformer: TransformerMixin,inplace: bool = True,mode: Union[TransformMode, str] = "per-segment",): class YeoJohnsonTransform(SklearnTransform):def __init__(self,in_column: Optional[Union[str, List[str]]] = None,inplace: bool = True,out_column: Optional[str] = None,standardize: bool = True,mode: Union[TransformMode, str] = "per-segment",): class BoxCoxTransform(SklearnTransform):def __init__(self,in_column: Optional[Union[str, List[str]]] = None,inplace: bool = True,out_column: Optional[str] = None,standardize: bool = True,mode: Union[TransformMode, str] = "per-segment",): class AddConstTransform(ReversibleTransform):def __init__(self, in_column: str, value: float, inplace: bool = True, out_column: Optional[str] = None): class OutliersTransform(ReversibleTransform, ABC):def __init__(self, in_column: str): class DensityOutliersTransform(OutliersTransform):def __init__(self,in_column: str,window_size: int = 15,distance_coef: float = 3,n_neighbors: int = 3,distance_func: Callable[[float, float], float] = absolute_difference_distance,): class PredictionIntervalOutliersTransform(OutliersTransform):def __init__(self,in_column: str,model: Union[Literal["prophet"], Literal["sarimax"], Type["ProphetModel"], Type["SARIMAXModel"]],interval_width: float = 0.95,**model_kwargs,): class MedianOutliersTransform(OutliersTransform):def __init__(self, in_column: str, window_size: int = 10, alpha: float = 3): class LabelEncoderTransform(IrreversibleTransform):def __init__(self, in_column: str, out_column: Optional[str] = None, strategy: str = ImputerMode.mean): class OneHotEncoderTransform(IrreversibleTransform):def __init__(self, in_column: str, out_column: Optional[str] = None): class DateFlagsTransform(IrreversibleTransform, FutureMixin):def __init__(self,day_number_in_week: Optional[bool] = True,day_number_in_month: Optional[bool] = True,day_number_in_year: Optional[bool] = False,week_number_in_month: Optional[bool] = False,week_number_in_year: Optional[bool] = False,month_number_in_year: Optional[bool] = False,season_number: Optional[bool] = False,year_number: Optional[bool] = False,is_weekend: Optional[bool] = True,special_days_in_week: Sequence[int] = (),special_days_in_month: Sequence[int] = (),out_column: Optional[str] = None,): class TimeFlagsTransform(IrreversibleTransform, FutureMixin):def __init__(self,minute_in_hour_number: bool = True,fifteen_minutes_in_hour_number: bool = False,hour_number: bool = True,half_hour_number: bool = False,half_day_number: bool = False,one_third_day_number: bool = False,out_column: Optional[str] = None,): class FourierTransform(IrreversibleTransform, FutureMixin):def __init__(self,period: float,order: Optional[int] = None,mods: Optional[Sequence[int]] = None,out_column: Optional[str] = None,): class SpecialDaysTransform(IrreversiblePerSegmentWrapper, FutureMixin):def __init__(self, find_special_weekday: bool = True, find_special_month_day: bool = True): class HolidayTransform(IrreversibleTransform, FutureMixin):def __init__(self, iso_code: str = "RUS", out_column: Optional[str] = None): class TheilSenTrendTransform(ReversiblePerSegmentWrapper):def __init__(self, in_column: str, poly_degree: int = 1, **regression_params): class LinearTrendTransform(ReversiblePerSegmentWrapper):def __init__(self, in_column: str, poly_degree: int = 1, **regression_params): class STLTransform(ReversiblePerSegmentWrapper):def __init__(self,in_column: str,period: int,model: Union[str, TimeSeriesModel] = "arima",robust: bool = False,model_kwargs: Optional[Dict[str, Any]] = None,stl_kwargs: Optional[Dict[str, Any]] = None,): class ChangePointsTrendTransform(ReversibleChangePointsTransform):def __init__(self,in_column: str,change_points_model: Optional[BaseChangePointsModelAdapter] = None,per_interval_model: Optional[PerIntervalModel] = None,): class TrendTransform(IrreversibleChangePointsTransform):def __init__(self,in_column: str,change_points_model: Optional[BaseChangePointsModelAdapter] = None,per_interval_model: Optional[PerIntervalModel] = None,out_column: Optional[str] = None,): class ChangePointsSegmentationTransform(IrreversibleChangePointsTransform):def __init__(self,in_column: str,change_points_model: Optional[BaseChangePointsModelAdapter] = None,out_column: Optional[str] = None,): class MedianPerIntervalModel(StatisticsPerIntervalModel):def __init__(self): class MeanPerIntervalModel(StatisticsPerIntervalModel):def __init__(self): class StatisticsPerIntervalModel(PerIntervalModel):def __init__(self, statistics_function: Callable[[np.ndarray], float]): class ConstantPerIntervalModel(PerIntervalModel):def __init__(self): class SklearnPreprocessingPerIntervalModel(PerIntervalModel):def __init__(self, preprocessing: TransformerMixin): class SklearnRegressionPerIntervalModel(PerIntervalModel):def __init__(self, model: Optional[RegressorMixin] = None): class RupturesChangePointsModel(BaseChangePointsModelAdapter):def __init__(self, change_points_model: BaseEstimator, **change_points_model_predict_params): ``` I'll give you some examples of prompts and expected results you should generate in ```EXAMPLES: ...``` section: ``` EXAMPLES: Example 1: given prompt: a need simple model expected result: {'_target_': 'etna.pipeline.Pipeline', 'horizon': '${__aux__.horizon}', 'model': {'_target_': 'etna.models.NaiveModel', 'lag': 1}} Example 2: given prompt: let's try gradient boosting with lag features, segment encoding and some date flags expected result: {'_target_': 'etna.pipeline.Pipeline', 'horizon': '${__aux__.horizon}', 'model': {'_target_': 'etna.models.CatBoostMultiSegmentModel'}, 'transforms': [{'_target_': 'etna.transforms.LagTransform', 'in_column': 'target', 'lags': '${shift:${horizon},[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]}'}, {'_target_': 'etna.transforms.SegmentEncoderTransform'}, {'_target_': 'etna.transforms.DateFlagsTransform', 'day_number_in_week': True, 'is_weekend': True, 'week_number_in_year': True}]} Example 3: given prompt: boosting with data drift detection expected result: {'model': {'_target_': 'etna.models.catboost.CatBoostMultiSegmentModel'}, 'transforms': [{'in_column': 'target', 'change_points_model': {'change_points_model': {'_target_': 'ruptures.detection.binseg.Binseg'}, 'change_points_model_predict_params': {'n_bkps': 5}, '_target_': 'etna.transforms.decomposition.change_points_based.change_points_models.ruptures_based.RupturesChangePointsModel'}, '_target_': 'etna.transforms.decomposition.change_points_based.segmentation.ChangePointsSegmentationTransform'}], 'horizon': '${__aux__.horizon}', '_target_': 'etna.pipeline.pipeline.Pipeline'} ``` RULES: * We can use only and only models and transforms from ```PROTOCOLS: ...``` section. * I insist on using models and transorms from ```PROTOCOLS: ...``` section!!!!! * It's all case sensitive, so be careful. * In 'model' field classes from etna.models * In 'transforms' field classes from etna.transforms * You should respect protocol of each model and transform * We need to use __aux__.horizon variable in 'horizon' field and shifts for lagged features """ def etnaGPT(prompt: str, horizon: int): completion = openai.ChatCompletion.create( model="gpt-3.5-turbo-16k", messages=[ {"role": "system", "content": SYSTEM_CONTEXT}, {"role": "user", "content": prompt}, ], temperature=0, ) message = completion.choices[0].message["content"] message = ast.literal_eval(message) message = fill_template(message, {"horizon": horizon}) pipe = get_from_params(**message) return pipe print(etnaGPT("Regression with lags, data drift detection and date features", 14))
No response
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Issue by martins0n
Thursday Jul 06, 2023 at 10:29 GMT
Originally opened as tinkoff-ai#1309
🚀 Feature Request
As a newbie you can just prompt feature names and model just from general knowledge and get proper pipeline or forecast.
Proposal
Test cases
No response
Additional context
No response
The text was updated successfully, but these errors were encountered: