簡體   English   中英

Python 錯誤:TypeError:不支持的操作數類型 -:'int' 和 'function'

[英]Python Error: TypeError: unsupported operand type(s) for -: 'int' and 'function'

我正在做一個任務。 我不斷收到 TypeError: unsupported operand type(s) for -: 'int' and 'function' 即使在研究了錯誤並應用了建議的修復程序之后。 我不是在尋找任何人給我一個解決方案,但我會很感激再看一眼。 我錯過了一些東西,但我不知道是什么。 這是我遇到問題的代碼部分:

accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]

plt.figure(figsize = (15, 5))
for no, r in enumerate(results):
    plt.plot(r, label = 'forecast %d'%(no + 1))
plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')
plt.legend()
plt.title('average accuracy: %.4f'%(np.mean(accuracies)))
plt.show()

收到的響應代碼是:

<ipython-input-109-bece89ad4cea> in <listcomp>(.0)
----> 1 accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]
      2 
      3 plt.figure(figsize = (15, 5))
      4 for no, r in enumerate(results):
      5     plt.plot(r, label = 'forecast %d'%(no + 1))

<ipython-input-105-f18f06dc1a5f> in calculate_accuracy(real, predict)
     60 def calculate_accuracy(real, predict):
     61     real = np.array(real) + 1
---> 62     predict = np.array(predict) + 1
     63     percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))
     64     return percentage * 100

TypeError: unsupported operand type(s) for +: 'function' and 'int'

如果您對此有任何見解,將不勝感激!

values 是 function 名稱,如果要獲取 values 的值,應該通過 values() 調用它。

應該更換

calculate_accuracy(df['Close'].iloc[-test_size:].values

經過

calculate_accuracy(df['Close'].iloc[-test_size:].values()

以下是導致錯誤的代碼部分:

calculate_accuracy(df['Close'].iloc[-test_size:].values

在該行的末尾,您會看到.value
value是一個 function ,它返回指定字典中所有值的數組,
就像任何其他 function 一樣,您需要()來調用它,否則,您只會引用它。

如果你print(calculate_accuracy(df['Close'].iloc[-test_size:].values)
你會得到類似的東西:

<built-in method values of dict object at 0x02AD2AF0>

更正的代碼將是:

calculate_accuracy(df['Close'].iloc[-test_size:].values()

每個人都在關注values 但是valuesDataFrame的有效用法。 values()是字典用法。

更仔細地查看回溯:

<ipython-input-109-bece89ad4cea> in <listcomp>(.0)
----> 1 accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]
...
<ipython-input-105-f18f06dc1a5f> in calculate_accuracy(real, predict)
     60 def calculate_accuracy(real, predict):
     61     real = np.array(real) + 1
---> 62     predict = np.array(predict) + 1
...

TypeError: unsupported operand type(s) for +: 'function' and 'int'

問題在於predict ,這是calculate_accuracy的第二個參數,即results中的元素r 第一個參數real是可以的。

也就是說,我無法想象np.array(predict)將如何產生function

什么是results 它是如何產生的? 該錯誤表明它是一個函數列表。 為什么?

您可能還想顯示calculate_accuracy function,但我們可能在錯誤回溯中看到了足夠多的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM