нужно найти матрицу cnfusion,точность,отзыв,оценку f1. мой код показывает, что объект ‘LabelBinarizer’ не имеет классов атрибутов_

#python #tensorflow #machine-learning #keras

Вопрос:

модель cnn для классификации изображений

 from keras.models import Sequential
from keras.layers import Dense,Activation,Flatten,Dropout
from keras.layers import Conv2D,MaxPooling2D
from keras.callbacks import ModelCheckpoint

model=Sequential()

model.add(Conv2D(200,(3,3),input_shape=data.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
#The first CNN layer followed by Relu and MaxPooling layers

model.add(Conv2D(100,(3,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
#The second convolution layer followed by Relu and MaxPooling layers

model.add(Flatten())
model.add(Dropout(0.5))
#Flatten layer to stack the output convolutions from second convolution layer
model.add(Dense(50,activation='relu'))
#Dense layer of 64 neurons
model.add(Dense(2,activation='softmax'))
#The Final layer with two outputs for two categories

model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])


from sklearn.model_selection import train_test_split

train_data,test_data,train_target,test_target=train_test_split(data,target,test_size=0.1)

checkpoint = ModelCheckpoint('model- 

{epoch:03d}.model',monitor='val_loss',verbose=0,save_best_only=True,mode='auto')

history=model.fit(train_data,train_target,epochs=4,callbacks=[checkpoint],validation_split=0.2)

from sklearn.metrics import classification_report
lb = LabelBinarizer()

print("[INFO] evaluating network...")
predIdxs = model.predict(test_data, batch_size=28)
 
# for each image in the testing set we need to find the index of the
# label with corresponding largest predicted probability
predIdxs = np.argmax(predIdxs, axis=1)
 
# show a nicely formatted classification report
print(classification_report(test_target.argmax(axis=1), predIdxs,
    target_names=lb.classes_))
 
# compute the confusion matrix and and use it to derive the raw
# accuracy, sensitivity, and specificity
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(test_target.argmax(axis=1), predIdxs)
total = sum(sum(cm))
acc = (cm[0, 0]   cm[1, 1]) / total
sensitivity = cm[0, 0] / (cm[0, 0]   cm[0, 1])
specificity = cm[1, 1] / (cm[1, 0]   cm[1, 1])
 
# show the confusion matrix, accuracy, sensitivity, and specificity
print(cm)
print("acc: {:.4f}".format(acc))
print("sensitivity: {:.4f}".format(sensitivity))
print("specificity: {:.4f}".format(specificity))
 

Мне нужно найти матрицу путаницы. мой код показывает, что объект ‘LabelBinarizer’ не имеет атрибута ‘classes_. я видел похожие проблемы, но решением было выполнить model.fit() перед labelbinarizer, но это не сработало

Комментарии:

1. Используйте tf.math.confusion_matrix для поиска вычислительной матрицы путаницы по прогнозам и меткам. Для бинарной классификации обратитесь к этому . Спасибо!