python - 获取两个列表的交叉熵时,Python 中的“int”对象不可调用错误

标签 python numpy machine-learning

因此,当我运行此代码时,我收到一个名为 “TypeError: 'int' object is not callable” 的错误。我做了一些研究,我认为这可能是由于交叉熵变量被声明为错误的类型。我非常感谢您提供一些帮助来弄清楚为什么我会收到此错误。基本上,我正在做的就是获取两个列表并尝试通过代码找出这两个列表的交叉熵。

import numpy as np

# Write a function that takes as input two lists Y, P,
# and returns the float corresponding to their cross-entropy.
def cross_entropy(Y, P):
    Y = np.float_(Y)
    P = np.float_(P)
    crossentropy = 0.0
    for i in range(len(Y)):
        crossentropy+=-1(Y[i]*np.log(P[i]) + (1-Y[i])*np.log(1-P[i]))
    return crossentropy

最佳答案

您的代码和计算有几个问题超出了您所询问的问题,但主要问题是:

x = 10
-1(x)

这不起作用,您需要指定乘法,因为 Python 中的 -1(x) 表示“使用参数调用 -1 (作为函数) x”。

即:

crossentropy += -1 * (Y[i]*np.log(P[i]) + (1-Y[i])*np.log(1-P[i]))

请注意,之后您可能会收到有关被零除的警告,具体取决于函数的输入。

关于python - 获取两个列表的交叉熵时,Python 中的“int”对象不可调用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59557925/

相关文章:

android - 支持向量机预测方法

python - 用python获取http头(获取405)

python - sympy 中的矩阵运算错误

Python数据框sume迭代

machine-learning - 为什么根据(或作为函数)鲑鱼的年龄和重量来预测鲑鱼的长度是一个回归问题?

r - 是否有可能在 R 中精简 GBM 模型?

python - 在 python 3.5 中,当使用参数列表作为 subprocess.Popen() 的输入时,我无法获得正确的 len(sys.argv)

python - 如何在 python 正则表达式中匹配双引号?

python - 如何将 2D numpy 数组中的元素旋转 'n' 个单位?

python - pandas:将具有相同值的连续行分组为一组