У меня есть простой вопрос, который я не мог понять, почему это так для меня.Я читаю две матрицы A и B (которые имеют размер 24 * 20), вычисляю их матрицу вычитания и сохраняю их, затем вычисляю MAPE (средняя абсолютная ошибка в процентах) .Проблема в том, что когда я читаю их через Pandas
и применяю следующую формулу к матрице вычитания:
Я получаю эту формулу для каждого столбца как 'series'
:
0 2.252708
1 1.727362
2 1.928928
3 1.562168
4 2.015080
5 2.760333
6 1.497950
7 1.047574
8 1.078431
9 1.065895
10 1.159555
11 0.937553
12 -0.130836
13 -0.090051
14 0.919025
15 0.094861
16 0.839204
17 -0.880221
18 -1.571482
19 -0.400643
dtype: float64
в то время как через Numpy
у меня есть только один правильный ответ.
17.813396179645633
Ниже приведен мой код:
# Import and call the needed libraries
import numpy as np
import pandas as pd
#A = np.zeros((24,20))
#B = np.zeros((24,20))
A = pd.read_csv('D:\A.csv', header=None)
B = pd.read_csv('D:\B.csv', header=None)
#A = np.loadtxt('D:\A.csv', delimiter=',' )
#B = np.loadtxt('D:\B.csv', delimiter=',' )
delta1a = A - B
df_delta1a = pd.DataFrame(delta1a, index=None)
df_delta1a.to_csv(f'Subtraction_Matrix_1a_.csv', na_rep='nan', encoding='utf-8', index=False)
#MAPE formula
mape_plot_1a = 100 *( 1 - np.abs( ( delta1a) / A) )
mape_1a = 100 *( np.sum( 1 - np.abs( delta1a / A) ) )/480
print(mape_1a)
mape_percentage_1a = ("%.2f%%" % mape_1a)
Так, как я могу читать матрицы с помощью Pandas
и получать права?уникальный результат после применения формулы?почему Pandas
возвращает 'series'
и, следовательно, я сталкиваюсь со следующей ошибкой:
TypeError: cannot convert the series to <class 'float'>
Мне интересно, конвертируется ли мой случай из массивов Pandas
в Numpy
или другую проблему, поскольку я проверилесть некоторые ответы, такие как , и , , но я не могу это исправить.