def RMSE_MAPE(ydata,y_hatdata,indexlist): y=[] y_hat=[] for i in indexlist: y.append(ydata.iat[i,0]) y.append(ydata.iat[i,1]) y.append(ydata.iat[i,2]) y_hat.append(y_hatdata.iat[i,0]) y_hat.append(y_hatdata.iat[i,1]) y_hat.append(y_hatdata.iat[i,2]) x1=0 for i in range(len(indexlist)): x1=x1+np.square(y[i] - y_hat[i]) x2=0 for i in range(len(indexlist)): x2=x2+np.abs((y[i] - y_hat[i]) / y[i]) RMSE = np.sqrt(x1/len(indexlist)) MAPE = x2*100/len(indexlist) #得到的是类似90%的90,实际值为0.9 print('RMSE:'+str(RMSE)+' MAPE:'+str(MAPE)) return
时间: 2023-06-10 18:04:11 浏览: 122
这是一个计算RMSE和MAPE的Python函数。它的参数是ydata,y_hatdata和indexlist,ydata和y_hatdata是数据框架,而indexlist是列表,包含要计算的数据的索引。
函数首先创建两个空列表y和y_hat。 然后通过在循环中使用iat方法从ydata和y_hatdata中提取y和y_hat。它在每次迭代中使用给定的索引号从每个列中提取三个元素并将它们附加到相应的列表中。
然后,函数计算RMSE和MAPE。它使用x1和x2来保存差异的平方和绝对误差和,然后将它们除以数据点的数量。最后,它将RMSE乘以2以获得MAPE的百分比形式。
相关问题
改写代码:def RMSE_MAPE(ydata,y_hatdata,indexlist): y = ydata.loc[indexlist].values.T y_hat = y_hatdata.loc[indexlist].values.T x1 = np.power(y - y_hat, 2).mean() x2 = np.abs((y - y_hat) / y).mean() RMSE = np.sqrt(x1) MAPE = x2*100 #输出结果单位为% print(f'RMSE:{RMSE} MAPE:{MAPE}') return RMSE, MAPE
修改代码如下:
def RMSE_MAPE(ydata, y_hatdata, indexlist):
y = ydata.loc[indexlist].values.T
y_hat = y_hatdata.loc[indexlist].values.T
diff = y - y_hat
x1 = np.mean(diff**2)
x2 = np.mean(np.abs(diff/y))
RMSE = np.sqrt(x1)
MAPE = x2 * 100
用pandas函数代替下列语句:def RMSE_MAPE(ydata,y_hatdata,indexlist): y=[] y_hat=[] for i in indexlist: y.append(ydata.iat[i,0]) y.append(ydata.iat[i,1]) y.append(ydata.iat[i,2]) y_hat.append(y_hatdata.iat[i,0]) y_hat.append(y_hatdata.iat[i,1]) y_hat.append(y_hatdata.iat[i,2]) x1=0 for i in range(len(indexlist)): x1=x1+np.square(y[i] - y_hat[i]) x2=0 for i in range(len(indexlist)): x2=x2+np.abs((y[i] - y_hat[i]) / y[i]) RMSE = np.sqrt(x1/len(indexlist)) MAPE = x2*100/len(indexlist) print('RMSE:'+str(RMSE)+' MAPE:'+str(MAPE)) return
import pandas as pd
def RMSE_MAPE(ydata, y_hatdata, indexlist):
y = pd.concat([ydata.loc[indexlist, 'col1'], ydata.loc[indexlist, 'col2'], ydata.loc[indexlist, 'col3']], ignore_index=True)
y_hat = pd.concat([y_hatdata.loc[indexlist, 'col1'], y_hatdata.loc[indexlist, 'col2'], y_hatdata.loc[indexlist, 'col3']], ignore_index=True)
x1 = np.square(y - y_hat).sum()
x2 = np.abs((y - y_hat) / y).sum()
RMSE = np.sqrt(x1 / len(y))
MAPE = x2 * 100 / len(y)
print('RMSE:', RMSE, 'MAPE:', MAPE)
return
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)