Π Π΅ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ:
from evalml.demos import load_breast_cancer
from evalml.pipelines import BinaryClassificationPipeline
from evalml.automl import AutoMLSearch
class PipeLine(BinaryClassificationPipeline):
component_graph = ["Drop Columns Transformer", "Random Forest Classifier"]
X , y = load_breast_cancer()
automl = AutoMLSearch(X, y, problem_type="binary", allowed_pipelines=[PipeLine],
pipeline_parameters={"Drop Columns Transformer": {"columns": ["mean texture"]}})
automl.search()
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
~/sources/evalml/evalml/pipelines/component_graph.py in instantiate(self, parameters)
77 try:
---> 78 new_component = component_class(**component_parameters, random_seed=self.random_seed)
79 except (ValueError, TypeError) as e:
~/sources/evalml/evalml/pipelines/components/transformers/column_selectors.py in __init__(self, columns, random_seed, **kwargs)
15 if columns and not isinstance(columns, list):
---> 16 raise ValueError(f"Parameter columns must be a list. Received {type(columns)}.")
17
ValueError: Parameter columns must be a list. Received <class 'str'>.
The above exception was the direct cause of the following exception:
ValueError Traceback (most recent call last)
<ipython-input-21-b4819258a317> in <module>
10 automl = AutoMLSearch(X, y, problem_type="binary", allowed_pipelines=[PipeLine],
11 pipeline_parameters={"Drop Columns Transformer": {"columns": ["mean texture"]}})
---> 12 automl.search()
~/sources/evalml/evalml/automl/automl_search.py in search(self, show_iteration_plot)
490 logger.info("Allowed model families: %s\n" % ", ".join([model.value for model in self.allowed_model_families]))
491 self.search_iteration_plot = None
--> 492 if self.plot:
493 self.search_iteration_plot = self.plot.search_iteration_plot(interactive_plot=show_iteration_plot)
494
~/sources/evalml/evalml/automl/automl_algorithm/iterative_algorithm.py in next_batch(self)
63 next_batch = []
64 if self._batch_number == 0:
---> 65 next_batch = [pipeline_class(parameters=self._transform_parameters(pipeline_class, {}), random_seed=self.random_seed)
66 for pipeline_class in self.allowed_pipelines]
67
~/sources/evalml/evalml/automl/automl_algorithm/iterative_algorithm.py in <listcomp>(.0)
63 next_batch = []
64 if self._batch_number == 0:
---> 65 next_batch = [pipeline_class(parameters=self._transform_parameters(pipeline_class, {}), random_seed=self.random_seed)
66 for pipeline_class in self.allowed_pipelines]
67
~/sources/evalml/evalml/pipelines/classification_pipeline.py in __init__(self, parameters, random_seed)
23 """
24 self._encoder = LabelEncoder()
---> 25 super().__init__(parameters, random_seed=random_seed)
26
27 def fit(self, X, y):
~/sources/evalml/evalml/pipelines/pipeline_base.py in __init__(self, parameters, random_seed)
77 else:
78 self._component_graph = ComponentGraph(component_dict=self.component_graph, random_seed=self.random_seed)
---> 79 self._component_graph.instantiate(parameters)
80
81 self.input_feature_names = {}
~/sources/evalml/evalml/pipelines/component_graph.py in instantiate(self, parameters)
80 self._is_instantiated = False
81 err = "Error received when instantiating component {} with the following arguments {}".format(component_name, component_parameters)
---> 82 raise ValueError(err) from e
83
84 component_instances[component_name] = new_component
ValueError: Error received when instantiating component Drop Columns Transformer with the following arguments {'columns': 'mean texture'}
IterativeAlgorithm
Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΠΈΡΠΊΠ° columns
ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ.
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° IterativeAlgorithm
Π²ΡΠ·ΡΠ²Π°Π΅Ρ _transform_parameters
ΠΈ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΡΠΎΡ ΠΊΠΎΠ΄ Π±ΡΠ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² Π°Π΄ΡΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ pipeline_parameters
ΡΡΠΎΠ±Ρ Π·Π°ΠΌΠΎΡΠΎΠ·ΠΈΡΡ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π³ΠΈΠΏΠ΅ΡΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
params = {'Imputer': {'numeric_impute_strategy': ['median', 'most_frequent']},
'Decision Tree Regressor': {'max_depth': [17, 18, 19], 'max_features': Categorical(['auto'])},
'Elastic Net Regressor': {"alpha": Real(0, 0.5), "l1_ratio": (0.01, 0.02, 0.03)}}
automl = AutoMLSearch(X_train=X, y_train=y, problem_type='regression', pipeline_parameters=params, n_jobs=1)
automl.search()
Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅ Π² _transform_parameters
Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Ρ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΡΠΏΠΈΡΠΊΠ°, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ max_depth
ΠΈΠ»ΠΈ numeric_impute_strategy
Π²ΡΡΠ΅, ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΠΏΠΈΡΠΊΠ΅.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ - ΡΠ΄Π°Π»ΠΈΡΡ ΡΡΡ ΡΡΡΠΎΠΊΡ ΠΈ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΎΠ².
@dsherry @freddyaboulton @ bchen1116 @chukarsten Π Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ :)
@dsherry @chukarsten
Π # 1862 ΠΏΠ»Π°Π½ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Drop Columns Transformer
Π² _get_preprocessing_components
ΠΊΠΎΠ³Π΄Π° ΡΡΠΎΠ»Π±Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π° Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΈ ΡΡΠΎΠ»Π±ΡΡ Π² self. pipeline_parameters
ΡΡΠΎΠ±Ρ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΠΊΠΆΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π»Π° Π΅Π³ΠΎ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
@dsherry @chukarsten
Π # 1862 ΠΏΠ»Π°Π½ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ
Drop Columns Transformer
Π²_get_preprocessing_components
ΠΊΠΎΠ³Π΄Π° ΡΡΠΎΠ»Π±Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π° Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΈ ΡΡΠΎΠ»Π±ΡΡ Π²self. pipeline_parameters
ΡΡΠΎΠ±Ρ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΠΊΠΆΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π»Π° Π΅Π³ΠΎ.