Я попытался сделать RSearchCV в SKlearn с моделью BaggingRegressor. Эта модель содержит склеарновую модель HuberRegressor в качестве base_estimator. Когда я пытаюсь установить отдельные модели BaggingRegressor без RSearcCV, все работает нормально. Но когда я пробую RSearchCV, он выдает мне сообщение об ошибке. Пожалуйста, смотрите ниже мой код и сообщение об ошибке после этого.
kf = KFold(n_splits=5, shuffle=True, random_state=baseseed)
modelfinal = HuberRegressor(fit_intercept=True, alpha=4.2200999999999995, epsilon=1.3100000000000003, warm_start=True, max_iter=450)
bagmodel = BaggingRegressor(modelfinal, n_estimators=100, max_samples=0.33, max_features=0.5, bootstrap=True,
bootstrap_features=True, random_state=baseseed, verbose=1, n_jobs=njobs)
bagmodel.fit(X_df_train, y_df_train)
#it is working this way
modelfinal = HuberRegressor(fit_intercept=True, alpha=4.2200999999999995, epsilon=1.3100000000000003, warm_start=True, max_iter=450)
bagmodel = BaggingRegressor()
bagparams = {"max_samples": np.arange(0.05, 1.01, 0.05), "max_features": np.arange(0.05, 1.01, 0.05), "bootstrap": [True, False],
"bootstrap_features": [True, False],
"n_estimators": np.arange(10, 600, 10),
"base_estimator": [modelfinal],
"random_state": [baseseed], "verbose": [1]}
bagmodelrs = RandomizedSearchCV(bagmodel, bagparams, n_iter=100, n_jobs=njobs, scoring="neg_mean_absolute_error",
verbose=1, cv=kf)
bagmodelrs.fit(X_df_train, y_df_train)
#here comes the following error
Fitting 5 folds for each of 100 candidates, totalling 500 fits
[Parallel(n_jobs=7)]: Using backend LokyBackend with 7 concurrent workers.
Traceback (most recent call last):
File "<ipython-input-5-ca5c3359581c>", line 20, in <module>
bagmodelrs.fit(X_df_train, y_df_train)
File "C:\Users\controllingde\Anaconda3\lib\site-packages\sklearn\model_selection\_search.py", line 688, in fit
self._run_search(evaluate_candidates)
File "C:\Users\controllingde\Anaconda3\lib\site-packages\sklearn\model_selection\_search.py", line 1469, in _run_search
random_state=self.random_state))
File "C:\Users\controllingde\Anaconda3\lib\site-packages\sklearn\model_selection\_search.py", line 667, in evaluate_candidates
cv.split(X, y, groups)))
File "C:\Users\controllingde\Anaconda3\lib\site-packages\joblib\parallel.py", line 934, in __call__
self.retrieve()
File "C:\Users\controllingde\Anaconda3\lib\site-packages\joblib\parallel.py", line 833, in retrieve
self._output.extend(job.get(timeout=self.timeout))
File "C:\Users\controllingde\Anaconda3\lib\site-packages\joblib\_parallel_backends.py", line 521, in wrap_future_result
return future.result(timeout=timeout)
File "C:\Users\controllingde\Anaconda3\lib\concurrent\futures\_base.py", line 432, in result
return self.__get_result()
File "C:\Users\controllingde\Anaconda3\lib\concurrent\futures\_base.py", line 384, in __get_result
raise self._exception
AttributeError: 'NoneType' object has no attribute 'write'
Я также безуспешно пытался: - HuberRegressor () в параметре dict вместо modelfinal - указание "modelfinal" в вызове BaggingRegressor, а нев параметре dict
Я работаю на Windows, Spyder, Sklearn 0.21.3, Python 3.7.3
Может кто-нибудь помочь?
спасибо и br
Christoph