Running same code as given in solution:
from sklearn.model_selection import cross_val_score
learning_rate = [0.01, 0.1, 1, 10]
max_leaf_nodes = [3, 10, 30]
best_score = 0
best_params = {}
for lr in learning_rate:
for mln in max_leaf_nodes:
print(f"Evaluating model with learning rate {lr:.3f}"
f" and max leaf nodes {mln}... ", end="")
model.set_params(classifier__learning_rate=lr,classifier__max_leaf_nodes=mln)
scores = cross_val_score(model, X_train, y_train, cv=2)
mean_score = scores.mean()
print(f"score: {mean_score:.3f}")
if mean_score > best_score:
best_score = mean_score
best_params = {'learning-rate': lr, 'max leaf nodes': mln}
print(f"Found new best model with score {best_score:.3f}!")
print(f"The best accuracy obtained is {best_score:.3f}")
print(f"The best parameters found are:\n {best_params}")
Evaluating model with 0.010 and max leaf nodes 3...
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-52-3fa1bc943941> in <module>
11 f" and max leaf nodes {mln}...",end="")
12 model.set_params(classifier__learning_rate = lr,
---> 13 classifier__max_leaf_nodes=mln)
14 scores = cross_val_score(model,X_train,y_train,cv=2)
15 mean_score = scores.mean()
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\pipeline.py in set_params(self, **kwargs)
161 self
162 """
--> 163 self._set_params('steps', **kwargs)
164 return self
165
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\metaestimators.py in _set_params(self, attr, **params)
48 self._replace_estimator(attr, name, params.pop(name))
49 # 3. Step parameters and other initialisation arguments
---> 50 super().set_params(**params)
51 return self
52
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\base.py in set_params(self, **params)
225 # Simple optimization to gain speed (inspect is slow)
226 return self
--> 227 valid_params = self.get_params(deep=True)
228
229 nested_params = defaultdict(dict) # grouped by prefix
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\pipeline.py in get_params(self, deep)
150 Parameter names mapped to their values.
151 """
--> 152 return self._get_params('steps', deep=deep)
153
154 def set_params(self, **kwargs):
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\metaestimators.py in _get_params(self, attr, deep)
30 for name, estimator in estimators:
31 if hasattr(estimator, 'get_params'):
---> 32 for key, value in estimator.get_params(deep=True).items():
33 out['%s__%s' % (name, key)] = value
34 return out
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\compose\_column_transformer.py in get_params(self, deep)
216 Parameter names mapped to their values.
217 """
--> 218 return self._get_params('_transformers', deep=deep)
219
220 def set_params(self, **kwargs):
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\metaestimators.py in _get_params(self, attr, deep)
26 if not deep:
27 return out
---> 28 estimators = getattr(self, attr)
29 out.update(estimators)
30 for name, estimator in estimators:
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\compose\_column_transformer.py in _transformers(self)
194 of tuples of len 2.
195 """
--> 196 return [(name, trans) for name, trans, _ in self.transformers]
197
198 @_transformers.setter
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\compose\_column_transformer.py in <listcomp>(.0)
194 of tuples of len 2.
195 """
--> 196 return [(name, trans) for name, trans, _ in self.transformers]
197
198 @_transformers.setter
ValueError: too many values to unpack (expected 3)