У меня есть две матрицы [A]
(Expected_matrice), [B]
(Predicted_matrice) Мне нужно создать третью [C]
(Error_matrice) путем их вычитания [C]=[A]-[B]
и передать ее в фрейм данных Pandas и сохранить в csv файл.
Поскольку размер вышеуказанных матриц равен 24 * 20, и я пытаюсь:
Первый: Участок [C]
через sns.heatmap(C, cbar=True, cmap="gray_gist")
Второй: Оцените [C], применив sum(abs(abs([A])-abs([B])))/24*20
, чтобы проверить, насколько он хорош. На самом деле я вычислил сумму Ошибка . Я также знаю, что можно использовать другой метод, такой как MSE from Sklearn import metrics
, применив:
from Sklearn import metrics
print(metrics.mean_squared_error(A,B))
Поскольку элементами матриц являются списки Я использовал: [i - j for (i, j) in zip(A,B)]
Мои коды следующие:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.ndimage.filters import gaussian_filter
#A,B can be read from .csv files
A = pd.read_csv('D:\A.csv', header=None)
B = pd.read_csv('D:\B.csv', header=None)
#A,B can be assumed as lists
df_A = pd.DataFrame(A)
df_B = pd.DataFrame(B)
#calculate error matrix via subtraction
C = [i - j for (i, j) in zip(A,B)]
#Pass error matrix to Pandas dataframe
df_C = pd.DataFrame(C)
df_C.to_csv('Error_Matrix.csv', header=None, index=None)
#Evaluation
Eval= sum(abs(abs([A])-abs([B])))/24*20
Eval_ = '{:04}'.format(Eval)
print(Eval_)
#Plotting C
fig, ax = plt.subplots(nrows=1, ncols=2 , figsize=(20,15))
plt.subplot(1,2,1)
ax = sns.heatmap(C, cbar=True, cmap="gist_gray")
plt.title(f'Error Matrix Error={Eval_}', fontsize=14 , fontweight='bold', color='black', loc='center', style='italic')
plt.axis('off')
plt.subplot(1,2,2)
C_smooth = gaussian_filter(dfr_b, sigma=1)
ax = sns.heatmap(C_smooth, vmin=np.min(C_smooth), vmax=np.max(C_smooth), cmap ="gray" , cbar=True , cbar_kws={"ticks":[0,33,67,100]})
plt.title(f'Error Matrix Smooth Error={Eval_}', fontsize=14 , fontweight='bold', color='black', loc='center', style='italic')
plt.axis('off')
plt.savefig('Error_Matrix.png')
plt.show()
Ожидаемые результаты:
![img](https://i.imgur.com/WIBBS6W.jpg)
Примечание белым цветом показана ошибка = 0, а сплошным черным цветом показана ошибка = максимум.
В основном это ошибка, но я не хочу, чтобы результат был черным. Я ожидал, что в основном серый цвет.
Данные (матрица A, B): Матрица A , Матрица B