我有两个矩阵[A](Expected_matrice),[B](Predicted_matrice)我需要通过减去它们来创建第三个[C](Error_matrice)[C] = [A] – [B]并将其传递给Pandas数据帧并保存在csv文件中.
由于上述矩阵的大小为24 * 20,我试图:
第一:通过sns.heatmap绘制[C](C,cbar = True,cmap =“gray_gist”)
第二:通过应用和(abs(abs([A]) – abs([B]))/ 24 * 20来评估[C]以检查它有多好.实际上我用它来计算误差量.我也知道可以通过应用以下方法使用Sklearn导入指标中的其他方法(如MSE):
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()
预期成绩:
注意白色显示错误= 0,纯黑色显示错误=最大值.
大多数应该是错误,但我不希望有黑色的结果我预计灰色主要是.