问题描述
def mse(predicted,desired):
return np.square(np.subtract(predicted,desired)).mean()
predicted = np.array
([[0.5000,0.5000],# 0 AND 0
[0.4721,0.5279],# 0 AND 1
[0.3049,0.6951],# 1 AND 0
[0.3345,0.6655]]) # 1 AND 1
desired = np.array
([[1,0],# False
[1,# False
[0,1]]) # True
每行(在上述两个矩阵中)都表示一种情况。我想这样将所有案例保持在一起,而不是将它们拆分为向量。问题是,我需要单独对待每一行。
我正在尝试获得以下结果,但我却没能完成
:returned output =
[0.2500,# 1st CASE ERROR
0.2786,# 2nd CASE ERROR
0.4831,# 3rd CASE ERROR
0.1118] # 4th CASE ERROR
我尝试了以下功能...
np.apply_along_axis(mse,1,predicted,desired)
但是它不起作用,因为“需求” 被作为整个矩阵而不是一次传递。那么,有什么方法可以在不更改“ mse函数”实现或循环的情况下实现这一目标?
解决方法
由于所有数据都以格式良好的ndarrays组成,因此您可以使NumPy承担所有繁重的工作。在这种情况下,您可以将for
循环转换为沿数组维度之一的约简。
np.square(np.subtract(predicted,desired)).mean(1)
或
((predicted-desired)**2).mean(1)
这是更易读的IMO。