Вы можете построить свою матрицу путаницы, используя функции numpy: np.where, чтобы найти, где вы предсказали метку, а затем узнать, где вы были правы. Это может выглядеть примерно так:
from sklearn.metrics import confusion_matrix
import numpy
y_test = np.array([0,1,2,0,1,2,0,1,2])
y_pred = np.array([0, 0, 2, 0, 0, 2, 0, 0, 2])
# Expected output is the scikit learn confusion matrix
sk_cm = confusion_matrix(y_test, y_pred)
Out:
array([[3, 0, 0],
[3, 0, 0],
[0, 0, 3]])
Теперь мы строим нашу собственную матрицу путаницы:
confusion_matrix = []
precision = []
succ_pred = 0
nmb = 0
TP = []
FN = []
for i in range(3):
indices = np.where(y_test == i)
new_row = []
# Rows where we predicted 0
new_row.append(len(np.where(y_pred[indices] == 0)[0]))
# Rows where we predicted 1
new_row.append(len(np.where(y_pred[indices] == 1)[0]))
# Rows where we predicted 2
new_row.append(len(np.where(y_pred[indices] == 2)[0]))
precision.append(new_row[i]/np.sum(new_row))
succ_pred += new_row[i]
TP.append(new_row[i])
FN.append(np.sum(new_row)-new_row[i])
nmb += np.sum(new_row)
confusion_matrix.append(new_row)
accuracy = succ_pred/nmb
Выход:
[[3, 0, 0], [3, 0, 0], [0, 0, 3]]
Наконец, вы можете поместить этот массив в df и сохранить его в Excel:
df = pd.DataFrame({'0' : confusion_matrix[0], '1' :confusion_matrix[1], '2': confusion_matrix[2]})
df.to_excel('test.xls')