二进制分类器模型的roc_auc_score错误

问题描述

我为二进制分类器开发了以下模型。我不得不使用roc_auc_score进行评估。我得到roc_auc_score的异常值。

使用时
epoch = 1,roc_auc_score = 0.8
epoch = 2,roc_auc_score =0.53

在此之后的任何时期,它都恒定为0.5。为什么会这样呢?我的模型出问题了吗?

数据预处理

#Load Dataset
test = pd.read_csv('test.csv')
train = pd.read_csv('train.csv')

#Combine Train and Test set for Data Cleaning
train['set'] = 'train'
test['set'] = 'test'
df = pd.concat([test,train])

#One Hot Encoding
df = pd.get_dummies(df,columns=['Gender','Driving_License','PrevIoUsly_Insured','Vehicle_Age','Vehicle_damage'])

#Moving Target Column to End
target = df['Response']
df.drop(labels=['Response'],axis=1,inplace = True)
df.insert(16,'Response',target)

#Separating Train and Test Data
train = df[df['set']=='train']
test = df[df['set']=='test']
train = train.drop('set',1)
test = test.drop('set',1)

#Creating Input Features and Target Variables
X= train.iloc[:,1:15]
y= train.iloc[:,[15]]

#Standardizing the Input Features
scaler = StandardScaler()
X = scaler.fit_transform(X)

#Train Test Split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3)

代码

#Model
model = Sequential()

model.add(Dense(14,activation='relu',kernel_initializer='random_normal',input_dim=14))
  
#Output Layer
model.add(Dense(1,activation = 'sigmoid',kernel_initializer='random_normal'))

#Compiling the neural network
model.compile(optimizer ='adam',loss='binary_crossentropy',metrics =['accuracy'])

#Fitting the data to the training dataset  
model.fit(X_train,batch_size=32,epochs=1,verbose=0) 

#Make predictions and convert to binary value
pred_train = model.predict(X_train)
pred_test = model.predict(X_test)  

#ROC AUC score
print('Train AUC = {:.5f}'.format(roc_auc_score(y_train,pred_train)))
print('Test AUC = {:.5f}'.format(roc_auc_score(y_test,pred_test)))

#Accuracy
print('Train Accuracy = {:.3f}'.format(accuracy_score(y_train,pred_train.round())))
print('Test Accuracy = {:.3f}'.format(accuracy_score(y_test,pred_test.round())))

解决方法

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

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

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