0

我阅读了有关位置参数和关键字参数的信息,但我仍然不明白为什么我会在运行以下代码时得到SyntexError: non-keyword arg after keyworkd arg。我没有在我的目标函数中指定任何关键字参数,对吧?

def obj_func(center, P, ACCUM, sentiment):
    d = 0
    for row in range(ACCUM[sentiment-1],ACCUM[sentiment]):
        v = P[row,:]
        d += v.dot(center) / (norm(v) * norm(center))
    return(-d)

iter_init = np.array([random() for ele in range(k)])
CENTERS = dict()
for sentiment in range(3):
    CENTERS[sentiment] = minimize(obj_func, x0=iter_init, args(P,ACCUM,sentiment),)

另外,我不太确定minimize(). 教程里的那个人是这样写的。这是对的吗?

4

1 回答 1

1

错误消息是因为在行中CENTERS[sentiment] = minimize(obj_func, x0=iter_init, args(P,ACCUM,sentiment),)您有关键字 agumentx0=iter_init并且之后您有非关键字参数args(P,ACCUM,sentiment)

args是您正在调用的函数并添加它作为参数返回的值。我敢打赌你想给出一个名为 args 的关键字参数,它是一个元组。在这种情况下,您会丢失=并且正确的语法是CENTERS[sentiment] = minimize(obj_func, x0=iter_init, args=(P,ACCUM,sentiment))

如果您不确定,可以help(minimize)在导入提供该功能的库后在 Python 控制台中检查参数。

于 2020-05-01T03:25:13.927 回答