![](/img/trans.png)
[英]Python error TypeError: unsupported operand type(s) for +=: 'type' and 'int'
[英]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
。 但是values
是DataFrame
的有效用法。 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.