|
6 | 6 | import numpy.typing as npt |
7 | 7 | from pandas import DataFrame |
8 | 8 |
|
| 9 | +from freqtrade.exceptions import DependencyException |
9 | 10 | from freqtrade.freqai.data_kitchen import FreqaiDataKitchen |
10 | 11 | from freqtrade.freqai.freqai_interface import IFreqaiModel |
11 | 12 |
|
@@ -63,12 +64,19 @@ def train(self, unfiltered_df: DataFrame, pair: str, dk: FreqaiDataKitchen, **kw |
63 | 64 | dd["train_labels"], _, _ = dk.label_pipeline.fit_transform(dd["train_labels"]) |
64 | 65 |
|
65 | 66 | if self.freqai_info.get("data_split_parameters", {}).get("test_size", 0.1) != 0: |
66 | | - (dd["test_features"], dd["test_labels"], dd["test_weights"]) = ( |
67 | | - dk.feature_pipeline.transform( |
68 | | - dd["test_features"], dd["test_labels"], dd["test_weights"] |
| 67 | + if dd["test_labels"].shape[0] == 0: |
| 68 | + raise DependencyException( |
| 69 | + f"{pair}: test set is empty after filtering. " |
| 70 | + f"This is usually caused by overly strict SVM thresholds or insufficient data. " |
| 71 | + f"Try reducing 'test_size' or relaxing your SVM conditions." |
69 | 72 | ) |
70 | | - ) |
71 | | - dd["test_labels"], _, _ = dk.label_pipeline.transform(dd["test_labels"]) |
| 73 | + else: |
| 74 | + (dd["test_features"], dd["test_labels"], dd["test_weights"]) = ( |
| 75 | + dk.feature_pipeline.transform( |
| 76 | + dd["test_features"], dd["test_labels"], dd["test_weights"] |
| 77 | + ) |
| 78 | + ) |
| 79 | + dd["test_labels"], _, _ = dk.label_pipeline.transform(dd["test_labels"]) |
72 | 80 |
|
73 | 81 | logger.info( |
74 | 82 | f"Training model on {len(dk.data_dictionary['train_features'].columns)} features" |
|
0 commit comments