mirror of
https://github.com/NicolasBohn/NexQuant.git
synced 2026-07-31 09:17:43 +00:00
d1019cb568
* fix model input shape bug and costeer_model bug * fix a bug * fix a bug in docker result extraction * a system-level optimization * add a filter of stdout * update * add stdout to model * model training_hyperparameters update * quant scenario * update some quant settings * llm choose action * Thompson Sampling Bandit for action choosing * refine both scens * add trace messages for quant scen * fix some bugs * fix some bugs * update * update * update * fix * fix * fix * update for merge * fix ci * fix some bugs * fix ci * fix ci * fix ci * fix ci * refactor * default qlib4rdagent local env downloading * fix ci * fix ci * fix a bug * fix ci * fix: align all prompts on template (#908) * use template to render all prompts * fix CI --------- Co-authored-by: Xu Yang <xuyang1@microsoft.com> * add fin_quant in cli * fix a bug * fix ci * fix some bugs * refactor * remove the columns in hypothesis if no value generated in this column * fix a bug * fix ci * fix conda env * add qlib gitignore * remove existed qlib folder & install torch in qlib conda * fix workspace ui in feedback * align model config in coder and runner in docker or conda * fix CI * fix CI --------- Co-authored-by: Xu Yang <peteryang@vip.qq.com> Co-authored-by: Xu Yang <xuyang1@microsoft.com>
71 lines
2.7 KiB
Python
71 lines
2.7 KiB
Python
import json
|
|
from typing import Dict, List
|
|
|
|
from jinja2 import Environment, StrictUndefined
|
|
|
|
from rdagent.components.coder.factor_coder import FactorCoSTEER
|
|
from rdagent.components.coder.model_coder import ModelCoSTEER
|
|
from rdagent.core.developer import Developer
|
|
from rdagent.oai.llm_utils import APIBackend
|
|
from rdagent.scenarios.kaggle.experiment.kaggle_experiment import (
|
|
KG_SELECT_MAPPING,
|
|
KGModelExperiment,
|
|
)
|
|
|
|
KGModelCoSTEER = ModelCoSTEER
|
|
KGFactorCoSTEER = FactorCoSTEER
|
|
from rdagent.utils.agent.tpl import T
|
|
|
|
DEFAULT_SELECTION_CODE = """
|
|
import pandas as pd
|
|
def select(X: pd.DataFrame) -> pd.DataFrame:
|
|
\"""
|
|
Select relevant features. To be used in fit & predict function.
|
|
\"""
|
|
if X.columns.nlevels == 1:
|
|
return X
|
|
{% if feature_index_list is not none %}
|
|
X = X.loc[:, X.columns.levels[0][{{feature_index_list}}].tolist()]
|
|
{% endif %}
|
|
X.columns = ["_".join(str(i) for i in col).strip() for col in X.columns.values]
|
|
return X
|
|
"""
|
|
|
|
|
|
class KGModelFeatureSelectionCoder(Developer[KGModelExperiment]):
|
|
def develop(self, exp: KGModelExperiment) -> KGModelExperiment:
|
|
target_model_type = exp.sub_tasks[0].model_type
|
|
assert target_model_type in KG_SELECT_MAPPING
|
|
if len(exp.experiment_workspace.data_description) == 1:
|
|
code = (
|
|
Environment(undefined=StrictUndefined)
|
|
.from_string(DEFAULT_SELECTION_CODE)
|
|
.render(feature_index_list=None)
|
|
)
|
|
else:
|
|
system_prompt = T("scenarios.kaggle.prompts:model_feature_selection.system").r(
|
|
scenario=exp.scen.get_scenario_all_desc(),
|
|
model_type=exp.sub_tasks[0].model_type,
|
|
)
|
|
user_prompt = T("scenarios.kaggle.prompts:model_feature_selection.user").r(
|
|
feature_groups=[desc[0] for desc in exp.experiment_workspace.data_description]
|
|
)
|
|
|
|
chosen_index = json.loads(
|
|
APIBackend().build_messages_and_create_chat_completion(
|
|
user_prompt=user_prompt,
|
|
system_prompt=system_prompt,
|
|
json_mode=True,
|
|
json_target_type=Dict[str, List[int]],
|
|
)
|
|
).get("Selected Group Index", [i + 1 for i in range(len(exp.experiment_workspace.data_description))])
|
|
chosen_index_to_list_index = [i - 1 for i in chosen_index]
|
|
|
|
code = (
|
|
Environment(undefined=StrictUndefined)
|
|
.from_string(DEFAULT_SELECTION_CODE)
|
|
.render(feature_index_list=chosen_index_to_list_index)
|
|
)
|
|
exp.experiment_workspace.inject_files(**{KG_SELECT_MAPPING[target_model_type]: code})
|
|
return exp
|