TypeError:将神经网络添加到堆栈中时无法腌制_thread.RLock对象

问题描述

我目前正在尝试构建一个由“标准模型”和神经网络组成的堆叠系统。 集成包含随机森林,XGBoost,SVM和catboost。但是,一旦我添加了神经网络,我就会收到错误消息“ TypeError:无法腌制_thread.RLock对象”。 我尝试过不同版本的Tensorflow(2.0.0、2.3.0、1.14、1.13),但这并不能解决问题。我希望有人可以帮助我解决这个问题。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

from sklearn.model_selection import train_test_split
from sklearn.model_selection import StratifiedKFold

from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import RobustScaler

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Activation,Flatten
from tensorflow.keras.optimizers import *

rs = 23

dataset = pd.read_csv(url,sep='|')

x = dataset.drop('fraud',axis=1)
y = dataset.fraud

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,stratify=y,random_state=rs)

scaler = StandardScaler()
scaler.fit(x_train)
x_train = scaler.transform(x_train)
x_test = scaler.transform(x_test)

分类

from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
from xgboost import XGBClassifier
from catboost import catboostClassifier

cb_clf = catboostClassifier(border_count=14,depth=4,iterations=600,l2_leaf_reg=1,silent= True,learning_rate= 0.02,thread_count=4,random_state=rs)
rf_clf = RandomForestClassifier(n_estimators = 700,criterion = "entropy",min_samples_leaf = 1,min_samples_split = 2,random_state = rs)
svc_clf = SVC(kernel = 'linear',C = 40,random_state = rs)
xg_clf = XGBClassifier(booster="gblinear",eta=0.5,random_state=rs)

DNN

x_train_dnn = np.array(x_train)
x_test_dnn = np.array(x_test)
y_train_dnn = np.array(y_train)
y_test_dnn = np.array(y_test)

def build_nn():

    dnn = Sequential()

    dnn.add(Dense(128,activation='relu',kernel_initializer='random_normal',input_dim=10))
    dnn.add(Dense(128,kernel_initializer='random_normal'))
    dnn.add(Dense(1,activation='sigmoid',kernel_initializer='random_normal'))
    dnn.compile(optimizer ='adam',loss='binary_crossentropy',metrics =['accuracy'])
  
    return dnn
dnn_clf = keras.wrappers.scikit_learn.KerasClassifier(
                            build_nn,epochs=500,batch_size=32,verbose=False)

dnn_clf._estimator_type = "classifier"
from sklearn.ensemble import StackingClassifier
from sklearn.linear_model import LogisticRegression

estimators = [("Random Forest",rf_clf),("XG",xg_clf),("SVC",svc_clf),("catboost",cb_clf),("DNN",dnn_clf)]

ensemble = StackingClassifier(estimators=estimators,n_jobs=-1,final_estimator=LogisticRegression())

安装合奏会导致错误

ensemble.fit(x_train,y_train)#fit model to training data
ensemble.score(x_test,y_test)#test our model on the test data

The above exception was the direct cause of the following exception:

TypeError                                 Traceback (most recent call last)
<ipython-input-14-1c003d476ea2> in <module>()
----> 1 ensemble.fit(x_train,y_train)#fit model to training data
      2 ensemble.score(x_test,y_test)#test our model on the test data

6 frames
/usr/lib/python3.6/concurrent/futures/_base.py in __get_result(self)
    382     def __get_result(self):
    383         if self._exception:
--> 384             raise self._exception
    385         else:
    386             return self._result

TypeError: can't pickle _thread.RLock objects

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...