|
1 | 1 | """Base class for selection pipelines."""
|
2 | 2 |
|
3 |
| -from copy import copy |
4 | 3 | from copy import deepcopy
|
5 | 4 | from typing import Any
|
6 | 5 | from typing import List
|
@@ -76,8 +75,10 @@ def selected_features(self) -> List[str]:
|
76 | 75 |
|
77 | 76 | """
|
78 | 77 | assert self._selected_features is not None, "Should be fitted first"
|
79 |
| - forced_features = self.forced_features if self.forced_features is not None else [] |
80 |
| - return list(set(self._selected_features + forced_features)) |
| 78 | + if self.forced_features is None: |
| 79 | + return sorted(self._selected_features) |
| 80 | + |
| 81 | + return sorted(set(self._selected_features + self.forced_features)) |
81 | 82 |
|
82 | 83 | @selected_features.setter
|
83 | 84 | def selected_features(self, val: List[str]):
|
@@ -110,8 +111,7 @@ def dropped_features(self) -> List[str]:
|
110 | 111 | list of dropped features.
|
111 | 112 |
|
112 | 113 | """
|
113 |
| - included = set(self._selected_features) |
114 |
| - return [x for x in self._in_features if x not in included] |
| 114 | + return [x for x in self._in_features if x not in set(self._selected_features)] |
115 | 115 |
|
116 | 116 | def __init__(
|
117 | 117 | self,
|
@@ -200,13 +200,11 @@ def select(self, dataset: LAMLDataset) -> LAMLDataset:
|
200 | 200 | New dataset with selected features only.
|
201 | 201 |
|
202 | 202 | """
|
203 |
| - selected_features = copy(self.selected_features) |
204 |
| - |
205 | 203 | # Add forced features
|
206 | 204 | if self.forced_features is None:
|
207 | 205 | self.forced_features = [feature for feature in dataset.features if dataset.roles[feature].force_input]
|
208 | 206 |
|
209 |
| - return dataset[:, set(selected_features + self.forced_features)] |
| 207 | + return dataset[:, self.selected_features] |
210 | 208 |
|
211 | 209 | def map_raw_feature_importances(self, raw_importances: Series):
|
212 | 210 | """Calculate input feature importances.
|
|
0 commit comments