如何在使用scikit进行k模型交叉验证时消除酸洗错误,请通过keras库学习



这是构建人工神经网络和分类器的代码。这是一个简单的客户流失模型,用于确定客户是否会离开银行。


#Building the ANN
import keras
from keras.models import Sequential
from keras.layers import Dense
#Initializing the ANN
classifier = Sequential()
#Adding input layer and hidden layer iinto ANN
classifier.add(Dense(6, kernel_initializer = 'glorot_uniform', activation = 'relu', input_shape = 
(11,)))
#Adding second hidden layer
classifier.add(Dense(6, kernel_initializer = 'glorot_uniform', activation = 'relu'))
#Adding the output/final layer
classifier.add(Dense(1, kernel_initializer = 'glorot_uniform', activation = 'sigmoid'))
#Compiling the ANN
classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics=('accuracy'))
#Fitting the ANN on trainig set using fit method
classifier.fit(X_train, y_train, batch_size = 10, epochs = 100)
#Making prediction and analyzing the dataset
y_prediction = classifier.predict(X_test)
#Converting the probablities into definite results for model validation
y_prediction = (y_prediction > 0.5)
#Making confusion matrix for evaluating the resuts
from sklearn.metrics import confusion_matrix  
cm = confusion_matrix(y_test, y_prediction)
#Evaluating, improving and tuning the ANN
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import cross_val_score
from keras.models import Sequential
from keras.layers import Dense
def build_classifier():
classifier = Sequential()
classifier.add(Dense(6, kernel_initializer = 'glorot_uniform', activation = 'relu', input_shape = 
(11,)))
classifier.add(Dense(6, kernel_initializer = 'glorot_uniform', activation = 'relu'))
classifier.add(Dense(1, kernel_initializer = 'glorot_uniform', activation = 'sigmoid'))
classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics=('accuracy'))
return classifier
classifier = KerasClassifier(build_fn = build_classifier(), batch_size = 10, epochs = 100)
accuracies = cross_val_score(estimator = classifier, X = X_train, y = y_train, cv = 10, n_jobs = -1)
---

这就是的错误


远程跟踪:"quot"追踪(最近一次通话(:文件";C: \Users\BSNL\anaconda3\lib\site-packages\joblib\externals\loky\backend\queues.py",第153行,进纸obj=转储(obj,reducers=reducers(文件";C: \Users\BSNL\anaconda3\lib\site-packages\joblib\externals\loky\backend\reduction.py",线271,在转储中dump(obj,buf,reducers=reducers,protocol=protocol(文件";C: \Users\BSNL\anaconda3\lib\site-packages\joblib\externals\loky\backend\reduction.py",线264,在转储中_LokyPickler(文件,reducers=reducers,protocol=protocol(.dump(obj(文件";C: \Users\BSNL\anaconda3\lib\site-packages\joblib\externals\cloudpickle_fast.py",管线563,在倾卸区return Pickler.dump(self,obj(TypeError:无法pickle"weakref"对象"quot">

上述异常是以下异常的直接原因:

追踪(最近一次通话(:

文件";C: \Users\BSNL\Documents\Deep_Learning_A_Z\第1卷-有监督的深度学习\第1部分-人工神经网络(ANN(\第4节-构建ANN \ ANN.py";,第78行,in准确度=cross_val_score(估计器=分类器,X=X_train,y=y_train,cv=10,n_jobs=-1(

文件";C: \Users\BSNL\anaconda3\lib\site-packages\sklearn\utils\validation.py",第72行,在inner_f中返回f(**kwargs(

文件";C: \Users\BSNL\anaconda3\lib\site-packages\sklearn\model_selection_validation.py";,第401行,在cross_val_scorecv_results=交叉验证(估计器=估计器,X=X,y=y,组=组,

文件";C: \Users\BSNL\anaconda3\lib\site-packages\sklearn\utils\validation.py",第72行,在inner_f中返回f(**kwargs(

文件";C: \Users\BSNL\anaconda3\lib\site-packages\sklearn\model_selection_validation.py";,第242行,in交叉验证分数=平行(

文件";C: \Users\BSNL\anaconda3\lib\site-packages\joblib\pparallel.py";,第1061行,调用self.retrieve((

文件";C: \Users\BSNL\anaconda3\lib\site-packages\joblib\pparallel.py";,行940,检索中自我_output.extend(job.get(timeout=self.timeout((

文件";C: \Users\BSNL\anaconda3\lib\site packages\joblib_parallel_backends.py",第542行,在包装_未来_结果返回future.result(超时=超时(

文件";C: \Users\BSNL\anaconda3\lib\concurrent\futures_base.py";,第432行,结果回归自我__get_result((

文件";C: \Users\BSNL\anaconda3\lib\concurrent\futures_base.py";,第388行,在__get_result中提升自我_异常

pickleingError:无法pickle任务以将其发送给工作者

设置n_jobs=1有效,因为我在Kerasclassifier的build_fn参数中也犯了一个放括号的错误,即使用build_classifier而不是build_classfier((。

最新更新