From 66b691b3e7fe71fb9bd319631bbd95730c3e7fc8 Mon Sep 17 00:00:00 2001 From: Xavier Tannier Date: Mon, 30 Oct 2017 15:48:05 +0100 Subject: [PATCH 1/4] Fixed deprecation warnings for use of n_iter in SGD and PassiveAggressive classifiers. - Removed n_iter parameter - Added space search for parameters max_iter and tol. --- hpsklearn/components.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/hpsklearn/components.py b/hpsklearn/components.py index b1d1fbb4..9c6ce1bb 100644 --- a/hpsklearn/components.py +++ b/hpsklearn/components.py @@ -1025,7 +1025,8 @@ def sgd(name, alpha=None, # default - 0.0001 l1_ratio=None, # default - 0.15, must be within [0, 1] fit_intercept=True, # default - True - n_iter=5, # default - 5 + max_iter=None, + tol=None, shuffle=True, # default - True random_state=None, # default - None epsilon=None, @@ -1057,7 +1058,9 @@ def _name(msg): l1_ratio=(_sgd_l1_ratio(_name('l1ratio')) if l1_ratio is None else l1_ratio), fit_intercept=fit_intercept, - n_iter=n_iter, + tol=_svm_tol(_name('tol')) if tol is None else tol, + max_iter=(_svm_max_iter(_name('maxiter')) + if max_iter is None else max_iter), learning_rate=(_sgdc_learning_rate(_name('learning_rate')) if learning_rate is None else learning_rate), eta0=_sgd_eta0(_name('eta0')) if eta0 is None else eta0, @@ -1077,7 +1080,8 @@ def sgd_regression(name, alpha=None, # default - 0.0001 l1_ratio=None, # default - 0.15, must be within [0, 1] fit_intercept=True, # default - True - n_iter=5, # default - 5 + tol=None, + max_iter=None, shuffle=None, # default - False random_state=None, # default - None epsilon=None, # default - 0.1 @@ -1102,7 +1106,9 @@ def _name(msg): l1_ratio=(_sgd_l1_ratio(_name('l1ratio')) if l1_ratio is None else l1_ratio), fit_intercept=fit_intercept, - n_iter=n_iter, + tol=_svm_tol(name_func('tol')) if tol is None else tol, + max_iter=(_svm_max_iter(name_func('maxiter')) + if max_iter is None else max_iter), # For regression, use the SVM epsilon instead of the SGD one. epsilon=_svm_epsilon(_name('epsilon')) if epsilon is None else epsilon, learning_rate=(_sgdr_learning_rate(_name('learning_rate')) @@ -1305,7 +1311,8 @@ def passive_aggressive(name, loss=None, C=None, fit_intercept=False, - n_iter=None, + tol=None, + max_iter=None, n_jobs=1, shuffle=True, random_state=None, @@ -1324,13 +1331,9 @@ def _name(msg): np.log(10), ) if C is None else C, fit_intercept=fit_intercept, - n_iter=scope.int( - hp.qloguniform( - _name('n_iter'), - np.log(1), - np.log(1000), - q=1, - )) if n_iter is None else n_iter, + tol=_svm_tol(_name('tol')) if tol is None else tol, + max_iter=(_svm_max_iter(_name('maxiter')) + if max_iter is None else max_iter), n_jobs=n_jobs, random_state=_random_state(_name('rstate'), random_state), verbose=verbose From 1522b12d5229cd3a2278775f9fc2afe1bec955b4 Mon Sep 17 00:00:00 2001 From: Xavier Tannier Date: Mon, 30 Oct 2017 15:57:18 +0100 Subject: [PATCH 2/4] - Removed numpy version limitation - Fixed networkx dependency, following https://github.com/hyperopt/hyperopt-sklearn/pull/85 As they say, this should be considered a temporary fix until hyperopt creates a new pip release. --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 63e8ac79..6be856fc 100644 --- a/setup.py +++ b/setup.py @@ -151,9 +151,10 @@ def find_package_data(packages): package_data = package_data, include_package_data = True, install_requires = [ + 'networkx==1.11', 'hyperopt', 'nose', - 'NumPy==1.11.0', + 'NumPy', 'scikit-learn', 'scipy', ], From c4c30d8132ac164335445a1b6d022aba7f8afd28 Mon Sep 17 00:00:00 2001 From: Xavier Tannier Date: Tue, 31 Oct 2017 13:24:40 +0100 Subject: [PATCH 3/4] Fixed a bug that appears from version 0.18 of scikit learn: DecisionTreeClassifier parameters min_samples_split and min_samples_leaf expect either float values between 0 and 1 or integer values. Float values higher than 1 were passed. --- hpsklearn/components.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hpsklearn/components.py b/hpsklearn/components.py index 9c6ce1bb..65099190 100644 --- a/hpsklearn/components.py +++ b/hpsklearn/components.py @@ -1004,12 +1004,12 @@ def _name(msg): ['sqrt', 'log2', None]) if max_features is None else max_features, max_depth=max_depth, - min_samples_split=hp.quniform( + min_samples_split=scope.int(hp.quniform( _name('min_samples_split'), - 1, 10, 1) if min_samples_split is None else min_samples_split, - min_samples_leaf=hp.quniform( + 1, 10, 1)) if min_samples_split is None else min_samples_split, + min_samples_leaf=score.int(hp.quniform( _name('min_samples_leaf'), - 1, 5, 1) if min_samples_leaf is None else min_samples_leaf, + 1, 5, 1)) if min_samples_leaf is None else min_samples_leaf, presort=presort, random_state=_random_state(_name('rstate'), random_state), ) From e8552e47cfe5ed56826734222755dbfaca536f9d Mon Sep 17 00:00:00 2001 From: Xavier Tannier Date: Tue, 31 Oct 2017 13:33:57 +0100 Subject: [PATCH 4/4] Fixed a bug that appears from version 0.18 of scikit learn: DecisionTreeClassifier parameters min_samples_split and min_samples_leaf expect either float values between 0 and 1 or integer values. Float values higher than 1 were passed. --- hpsklearn/components.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hpsklearn/components.py b/hpsklearn/components.py index 65099190..e6b5d126 100644 --- a/hpsklearn/components.py +++ b/hpsklearn/components.py @@ -1007,7 +1007,7 @@ def _name(msg): min_samples_split=scope.int(hp.quniform( _name('min_samples_split'), 1, 10, 1)) if min_samples_split is None else min_samples_split, - min_samples_leaf=score.int(hp.quniform( + min_samples_leaf=scope.int(hp.quniform( _name('min_samples_leaf'), 1, 5, 1)) if min_samples_leaf is None else min_samples_leaf, presort=presort,