为什么混淆矩阵和模型账户不同
Why Confusion Maxtrix and Model ACC are different
目前,我们正在使用 CNN
构建 Confusion Matrix
,这与 Model Acc
不同。
Model ACC
是 92.3% 当 51% 精度是使用 Confusion Matrix
.
在这种情况下,Model ACC
和 Confusion Matrix
以下哪项应该正确?
我该如何解决这个问题?
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=
['accuracy'])
hist = model.fit_generator(train_generator, steps_per_epoch=10, epochs= 20,
validation_data=test_generator, validation_steps=10 )
#5. Model Evaluate
print("-- Evaluate --")
scores = model.evaluate_generator(test_generator)
print("%s: %.2f%%" %(model.metrics_names[1], scores[1]*100))
# 6. Make Confusion Matrix
print("-- Predict --")
output = model.predict_generator(test_generator)
print('Counfusion Matrix')
output1 = np.argmax(output,axis=1)
cm1=confusion_matrix(test_generator.classes, output1)
print(cm1)
你肯定做错了什么,我运行在mnsit数据集上做了一个简单的实验,我得到了同样的结果。
# my model loss and metric
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
# fit model and train
# evaluate model
score = model.evaluate(X_train, Y_train1, verbose=1)
print('Val accuracy by model:', score[1])
from sklearn.metrics import confusion_matrix as cm
pred = model.predict(X_train)
pred_label = [np.argmax(i) for i in pred]
actual_label = [np.argmax(i) for i in Y_train1]
cm1 = cm(pred_label, actual_label)
print('Val accuracy by confusion-metrics:', np.trace(cm1)/Y_train1.shape[0])
查看结果:
Val accuracy by model: 0.9872380952380952
Val accuracy by confusion-metrics: 0.9872380952380952
确保您传递了正确的指标和损失函数。
目前,我们正在使用 CNN
构建 Confusion Matrix
,这与 Model Acc
不同。
Model ACC
是 92.3% 当 51% 精度是使用 Confusion Matrix
.
在这种情况下,Model ACC
和 Confusion Matrix
以下哪项应该正确?
我该如何解决这个问题?
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=
['accuracy'])
hist = model.fit_generator(train_generator, steps_per_epoch=10, epochs= 20,
validation_data=test_generator, validation_steps=10 )
#5. Model Evaluate
print("-- Evaluate --")
scores = model.evaluate_generator(test_generator)
print("%s: %.2f%%" %(model.metrics_names[1], scores[1]*100))
# 6. Make Confusion Matrix
print("-- Predict --")
output = model.predict_generator(test_generator)
print('Counfusion Matrix')
output1 = np.argmax(output,axis=1)
cm1=confusion_matrix(test_generator.classes, output1)
print(cm1)
你肯定做错了什么,我运行在mnsit数据集上做了一个简单的实验,我得到了同样的结果。
# my model loss and metric
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
# fit model and train
# evaluate model
score = model.evaluate(X_train, Y_train1, verbose=1)
print('Val accuracy by model:', score[1])
from sklearn.metrics import confusion_matrix as cm
pred = model.predict(X_train)
pred_label = [np.argmax(i) for i in pred]
actual_label = [np.argmax(i) for i in Y_train1]
cm1 = cm(pred_label, actual_label)
print('Val accuracy by confusion-metrics:', np.trace(cm1)/Y_train1.shape[0])
查看结果:
Val accuracy by model: 0.9872380952380952
Val accuracy by confusion-metrics: 0.9872380952380952
确保您传递了正确的指标和损失函数。