首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >面试准备- Logistic回归问题

面试准备- Logistic回归问题
EN

Data Science用户
提问于 2021-04-23 07:22:06
回答 2查看 3.9K关注 0票数 1

所以我正在做一些准备面试的练习。然而,有一项任务我不明白。也许你们中的一些人能解释一下他们想让我做什么?这将帮助我理解我可能遇到的潜在问题框架。

这是一项任务:

Logit回归函数LogitRegression(arr)读取由空间分隔的4个数字x、y、a、b的输入数组,并为更新的a和b返回两个数字的输出(假设学习速率为1)。将a和b的小数点后最多保存3位数字。输出应该是一个字符串,格式为: a,b。

代码语言:javascript
复制
  def LogitRegression(arr):

  # code goes here
  return arr

  # keep this function call here 
  print(LogitRegression(input()))

Logistic回归是一种简单的分类方法,在神经网络中,同样的公式也常被用作输出层。我们假设输入和输出变量都是标量,并且logistic回归可以写成:

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。或者是a,应该是权值和偏差,我需要返回训练过的?第二个例子中的输出数字与概率不匹配,所以不可能是这样。我可能想得太多了,这只是我需要做的一件简单的事情?

这是我尝试过的代码:

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
2.900000098664297 4.700000044847409
EN

回答 2

Data Science用户

回答已采纳

发布于 2021-04-23 07:40:14

它们给出模型参数ab的当前值,以及一个新的数据点(x,y),并请求使用数据点执行梯度下降的一个训练步骤,并返回ab的更新值。

代码的问题是,在参数更新中,学习速率的标志是错误的。如果将其更改为减号,结果将如预期的那样:

代码语言:javascript
复制
new_weights = weights - learnrate * (y - y_hat) * X
new_bias = bias - learnrate*(y - y_hat)
票数 1
EN

Data Science用户

发布于 2023-04-19 10:38:28

除了符号错误之外,您所缺少的是只考虑三个十进制数字(并将数字转换为字符串)。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/93440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档