ObjFun() missing 2 required positional arguments: 'y' and 'beta'
时间: 2023-12-23 22:02:27 浏览: 62
这个错误通常是因为在调用ObjFun()函数时没有传递正确的参数。'y'和'beta'是ObjFun()函数的两个必需参数,如果没有正确传递它们,就会出现这个错误。
你可以检查一下调用ObjFun()函数的地方,看看是否正确传递了'y'和'beta'两个参数。如果你确定参数已经正确传递,那么可能是函数定义中的参数名称有误,你需要检查一下函数定义是否正确。
相关问题
1.编写测试函数对应的jl文件并测试 输入:x为迭代点 输出:f为函数值 函数头:objfun(x) 测试参数:x=[0,0]
在Julia(一种动态类型的编程语言)中,编写一个测试函数通常涉及到创建一个`.jl`文件,这个文件会定义`objfun`函数以及相关的测试用例。下面是一个简单的例子,假设我们有一个名为`my_function.jl`的文件:
```julia
# my_function.jl
function objfun(x)
# 这里填写实际的函数实现
return x[1]^2 + x[2]^2 # 示例:返回x坐标的平方和
end
```
接下来,我们需要在一个测试文件(如`test_my_function.jl`)中编写测试代码,使用`Test`包来验证`objfun`的功能:
```julia
# test_my_function.jl
using Test
using .my_function # 导入刚刚定义的my_function模块
function test_objfun()
x = [0, 0] # 测试参数
expected_result = 0 # 预期结果
@test objfun(x) ≈ expected_result # 使用约等于运算符检查近似相等
println("Function called with $x returned approximately $(objfun(x))")
# 更多测试用例...
x = [1, 1]
@test objfun(x) ≈ 2
return nothing
end
test_objfun() # 运行测试函数
```
在这个测试中,当`x=[0,0]`时,预期结果应该是0(因为坐标原点的平方和为0)。如果`objfun(x)`的实际输出与期望相符,则测试通过。
def ObjFun(x,y,beta): # 目标函数 """ Logistic regression loss function :param beta: model parameter vector :param x: feature matrix :param y: label vector :return: loss value """ n = x.shape[0] p = x.shape[1] #? sigm
oid = 1 / (1 + np.exp(-x @ beta)) # 计算sigmoid函数的值
loss = -np.sum(y * np.log(sigmoid) + (1 - y) * np.log(1 - sigmoid)) / n # 计算损失值
return loss
这是一个用于逻辑回归的目标函数,其中x是特征矩阵,y是标签向量,beta是模型参数向量。函数中通过使用sigmoid函数计算预测值,并使用交叉熵损失函数计算损失值。最终返回的是损失值。
阅读全文