Scikit-learn: рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдЪрд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд╣реАрдВ рдХреЗ рд╕рд╛рде рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкрд░ рдЧреНрд░рд┐рдб рдЦреЛрдЬ рдХреЗ рджреМрд░рд╛рди рдЙрдард╛рдИ рдЧрдИ рддреНрд░реБрдЯрд┐

рдХреЛ рдирд┐рд░реНрдорд┐рдд 12 рдирд╡ре░ 2020  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: scikit-learn/scikit-learn

рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ

рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдЪрд░рдг рдХреЗ рд▓рд┐рдП None рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкрд░ рдЧреНрд░рд┐рдб рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп, рдПрдХ AttributeError рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдпрд╣ рд╕реНрдирд┐рдкреЗрдЯ рдкрд╣рд▓реЗ scikit-learn==0.23.2 рд╕рд╛рде рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЪрд▓рд╛ рд▓реЗрдХрд┐рди рдЕрдм 0.24.dev0 рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЪрд░рдг/рдХреЛрдб рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

from sklearn.datasets import load_iris
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC

iris = load_iris()
X, y = iris.data, iris.target

pipe = Pipeline([("setup", None), ("svc", SVC(kernel="linear", random_state=0))])

param_grid = [
    {"svc__C": [0.1, 0.1]},
    {"setup": [StandardScaler()]},
]

gs = GridSearchCV(pipe, param_grid=param_grid, return_train_score=True, cv=3)
gs.fit(X, y)

рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо

рдЙрджрд╛рд╣рд░рдг: рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдлреЗрдВрдХреА рдЧрдИ рд╣реИред рдХреГрдкрдпрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдЪрд┐рдкрдХрд╛рдПрдБ рдпрд╛ рдЙрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред

GridSearchCV.fit рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░реНрдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо

рдХреГрдкрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдЙрдЯрдкреБрдЯ рдпрд╛ рдЯреНрд░реЗрд╕рдмреИрдХ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ рдпрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрди рдХрд░реЗрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдЙрдард╛рдИ рдЧрдИ рд╣реИ (рдореИрдВрдиреЗ рдкреВрд░реНрдг рдЯреНрд░реЗрд╕рдмреИрдХ рдХреЛ рдФрд░ рдиреАрдЪреЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ):

  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/sklearn/base.py", line 863, in _is_pairwise
    pairwise_tag = estimator._get_tags().get('pairwise', False)
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/sklearn/base.py", line 348, in _get_tags
    more_tags = base_class._more_tags(self)
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/sklearn/pipeline.py", line 626, in _more_tags
    estimator_tags = self.steps[0][1]._get_tags()
AttributeError: 'NoneType' object has no attribute '_get_tags'

рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ _is_pairwise рдЪреЗрдХ рдПрдХ рдЪрд░рдг рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЗ рд▓рд┐рдП None рдХреЗ рд╕рд╛рде рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдкрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред


рдкреВрд░реНрдг рдЯреНрд░реЗрд╕рдмреИрдХ:

Traceback (most recent call last):
  File "test-pipeline.py", line 18, in <module>
    gs.fit(X, y)
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/sklearn/utils/validation.py", line 60, in inner_f
    return f(*args, **kwargs)
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/sklearn/model_selection/_search.py", line 841, in fit
    self._run_search(evaluate_candidates)
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/sklearn/model_selection/_search.py", line 1288, in _run_search
    evaluate_candidates(ParameterGrid(self.param_grid))
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/sklearn/model_selection/_search.py", line 795, in evaluate_candidates
    out = parallel(delayed(_fit_and_score)(clone(base_estimator),
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/joblib/parallel.py", line 1048, in __call__
    if self.dispatch_one_batch(iterator):
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/joblib/parallel.py", line 866, in dispatch_one_batch
    self._dispatch(tasks)
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/joblib/parallel.py", line 784, in _dispatch
    job = self._backend.apply_async(batch, callback=cb)
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/joblib/_parallel_backends.py", line 208, in apply_async
    result = ImmediateResult(func)
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/joblib/_parallel_backends.py", line 572, in __init__
    self.results = batch()
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/joblib/parallel.py", line 262, in __call__
    return [func(*args, **kwargs)
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/joblib/parallel.py", line 262, in <listcomp>
    return [func(*args, **kwargs)
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/sklearn/utils/fixes.py", line 222, in __call__
    return self.function(*args, **kwargs)
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/sklearn/model_selection/_validation.py", line 585, in _fit_and_score
    X_train, y_train = _safe_split(estimator, X, y, train)
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/sklearn/utils/metaestimators.py", line 198, in _safe_split
    if _is_pairwise(estimator):
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/sklearn/base.py", line 863, in _is_pairwise
    pairwise_tag = estimator._get_tags().get('pairwise', False)
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/sklearn/base.py", line 348, in _get_tags
    more_tags = base_class._more_tags(self)
  File "/Users/james/miniforge3/envs/dask-ml/lib/python3.8/site-packages/sklearn/pipeline.py", line 626, in _more_tags
    estimator_tags = self.steps[0][1]._get_tags()
AttributeError: 'NoneType' object has no attribute '_get_tags'

рд╕рдВрд╕реНрдХрд░рдгреЛрдВ

System:
    python: 3.8.6 | packaged by conda-forge | (default, Oct  7 2020, 18:42:56)  [Clang 10.0.1 ]
executable: /Users/james/miniforge3/envs/dask-ml/bin/python3.8
   machine: macOS-10.15.5-x86_64-i386-64bit

Python dependencies:
          pip: 20.2.4
   setuptools: 49.6.0.post20201009
      sklearn: 0.24.dev0
        numpy: 1.19.4
        scipy: 1.5.3
       Cython: None
       pandas: 1.1.4
   matplotlib: None
       joblib: 0.17.0
threadpoolctl: 2.1.0

Built with OpenMP: True

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдЗрд╕реЗ рдПрдХ рдЕрд╡рд░реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рддреНрд░реБрдЯрд┐ рдХреЗрд╡рд▓ None рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧреА, рдмрд▓реНрдХрд┐ рдХрд┐рд╕реА рднреА рдЪрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЬрд┐рд╕рдореЗрдВ _get_tags рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ (рд╕рдВрднрд╡рддрдГ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрдирд╣реЗрд░рд┐рдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ) BaseEstimator )

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@jrbourbeau рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдКрдкрд░ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рд╡рд┐рднрд┐рдиреНрди рдореБрджреНрджреЛрдВ рдореЗрдВ рд╕рд░реНрд╡реЛрддреНрддрдо рд╕рдорд╛рдзрд╛рди рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

рдореИрдВ рдЗрд╕реЗ рдПрдХ рдЕрд╡рд░реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рддреНрд░реБрдЯрд┐ рдХреЗрд╡рд▓ None рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧреА, рдмрд▓реНрдХрд┐ рдХрд┐рд╕реА рднреА рдЪрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЬрд┐рд╕рдореЗрдВ _get_tags рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ (рд╕рдВрднрд╡рддрдГ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрдирд╣реЗрд░рд┐рдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ) BaseEstimator )

#резреоренрепрен рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╕рдордп рдкрд░ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ @jrbourbeau рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

amueller picture amueller  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bmulas1535 picture bmulas1535  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tluocs picture tluocs  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ArtyomKaltovich picture ArtyomKaltovich  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

AntiDoctor picture AntiDoctor  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ