Python 如何使用IMBREAN管道保存sklearn gridsearchcv后的模型:TypeError:can';t pickle\u thread.RLock对象

Python 如何使用IMBREAN管道保存sklearn gridsearchcv后的模型:TypeError:can';t pickle\u thread.RLock对象,python,tensorflow2.0,tf.keras,gridsearchcv,imblearn,Python,Tensorflow2.0,Tf.keras,Gridsearchcv,Imblearn,我面临的问题是,在处理一个极不平衡的数据集时,我使用IMBREAN pipeline和sklearn gridsearchcv执行了网格搜索,但当我尝试保存模型时,我得到了错误“TypeError:can't pickle _thread.RLock objects”。我用来保存模型的语句是 案例1: import pickle pickle.dump(grid_result,open(model_filename,'wb')) 案例2: from sklearn.externals imp

我面临的问题是,在处理一个极不平衡的数据集时,我使用IMBREAN pipeline和sklearn gridsearchcv执行了网格搜索,但当我尝试保存模型时,我得到了错误“TypeError:can't pickle _thread.RLock objects”。我用来保存模型的语句是

案例1:

import pickle

pickle.dump(grid_result,open(model_filename,'wb'))
案例2:

from sklearn.externals import joblib

joblib.dump(grid_result.best_estimator_, 'GS_obj.pkl')
1) 对于二进制分类问题,我定义了如下所示的模型体系结构

构建函数以创建KerasClassifier所需的模型 2) 构建参数搜索网格,如下所示

初始化参数网格 2) 实例化管道并执行GridSearch,如下所示

实例化SMOTE对象 实例化Scaler对象 实例化管道 执行GridSearchCV 请告知如何使用下面给出的保存模型,我无法保存模型并获得错误“TypeError:can't pickle\u thread.RLock objects”

案例1:

import pickle

pickle.dump(grid_result,open(model_filename,'wb'))
导入pickle
dump(网格结果,打开(模型文件名,'wb'))
案例2:

from sklearn.externals import joblib

joblib.dump(grid_result.best_estimator_, 'GS_obj.pkl')
从sklearn.externals导入作业库
joblib.dump(grid_result.best_estimator_'GS_obj.pkl'))
谢谢


Surajit

案例1:导入pickle pickle.dump(网格结果,open('GS_obj.pkl','wb'))有相同的问题-您解决过这个问题吗?
smote_obj=SMOTE(sampling_strategy='minority',random_state=42,n_jobs=-1)
scaler_obj=StandardScaler()
steps = [('standardize', scaler_obj),('oversample', smote_obj),('NN_clf', model)]

pipe_clf = Pipeline(steps)

pipe_clf
grid = GridSearchCV(estimator=pipe_clf, param_grid=nn_param_grid, verbose=2, cv=10,scoring='precision',return_train_score=False,n_jobs=-1) 

grid_result = grid.fit(X_train, y_train)