所以我正在做一些练习来准备面试测试。但是有一个任务我不明白。也许你们中的一些人可以解释他们想让我做什么?这将帮助我理解我可能遇到的潜在问题。
这是作业:
Logit Regression 让函数 LogitRegression(arr) 读取由空格分隔的 4 个数字 x、y、a、b 的输入数组,并返回更新后的 a 和 b 的两个数字的输出(假设学习率为 1)。a 和 b 的小数点后最多保存 3 位数字。输出应该是格式为:a, b 的字符串
def LogitRegression(arr):
# code goes here
return arr
# keep this function call here
print(LogitRegression(input()))
逻辑回归是一种简单的分类方法,同样的公式也常用作神经网络的输出层。我们假设输入和输出变量都是标量,逻辑回归可以写成:
y = 1.0 / (1.0 + exp(-ax - b))
观察一个数据示例 (x, y) 后,参数 a 和b 可以使用具有学习率的梯度下降来更新。示例:
输入:[1, 1, 1, 1]
输出:0.881, 0.881
输入:[2.2, 0.0, 5.1, 5.7]
输出:7.3, 6.7
我不明白的是,他们是否只给我 4 个标量并希望我在 x、y 上进行训练,然后预测 a 和 b。还是应该是权重和偏见,我需要归还训练有素的?第二个示例中的输出数字与概率不匹配,因此不可能。我可能想多了,这只是我需要做的一件简单的事情?
这是我尝试过的代码:
arr = np.array([2.2, 0.0, 5.1, 5.7])
arr2 = np.array([1.0, 1.0, 1.0,1.0])
def Logit(arr):
learnrate = 1
X = arr[0]
y = arr[1]
weights = arr[2]
bias = arr[3]
y_hat = 1/(1+np.exp(np.dot(X, -weights) - bias))
new_weights = weights + learnrate * (y - y_hat) * X
new_bias = bias + learnrate*(y - y_hat)
print(new_weights, new_bias)
Logit(arr)
输出:
2.900000098664297 4.700000044847409