diff --git a/rdagent/components/coder/factor_coder/CoSTEER/evaluators.py b/rdagent/components/coder/factor_coder/CoSTEER/evaluators.py index ef480b4b..4951866b 100644 --- a/rdagent/components/coder/factor_coder/CoSTEER/evaluators.py +++ b/rdagent/components/coder/factor_coder/CoSTEER/evaluators.py @@ -394,6 +394,13 @@ class FactorValueEvaluator(FactorEvaluator): if version == 1: feedback_str, _ = FactorSingleColumnEvaluator(self.scen).evaluate(implementation, gt_implementation) conclusions.append(feedback_str) + elif version == 2: + input_shape = self.scen.input_shape + _, gen_df = self._get_df(gt_implementation, implementation) + if gen_df.shape[-1] > input_shape[-1]: + conclusions.append( + "Output dataframe has more columns than input feature which is not acceptable in feature processing tasks. Please check the implementation to avoid generating too many columns. Consider this implementation as a failure." + ) # Check if the index of the dataframe is ("datetime", "instrument") feedback_str, _ = FactorOutputFormatEvaluator(self.scen).evaluate(implementation, gt_implementation) diff --git a/rdagent/scenarios/kaggle/experiment/scenario.py b/rdagent/scenarios/kaggle/experiment/scenario.py index 8a2d08bc..e4536ab7 100644 --- a/rdagent/scenarios/kaggle/experiment/scenario.py +++ b/rdagent/scenarios/kaggle/experiment/scenario.py @@ -128,6 +128,8 @@ class KGScenario(Scenario): pickle.dump(X_test, open(data_folder / "X_test.pkl", "wb")) pickle.dump(others, open(data_folder / "others.pkl", "wb")) + self.input_shape = X_train.shape + buffer = io.StringIO() X_valid.info(verbose=True, buf=buffer, show_counts=True) data_info = buffer.getvalue()