0

我在 Jupiter 笔记本中遇到了使用 python 编码的问题。这个问题是关于线性回归的。如下:

1:线性回归 在本笔记本中,我们将从线性函数生成数据:=+,然后使用 OLS(普通最小二乘法)和梯度下降求解 ̂。

问题 1.1:生成数据:=+ 这里我们假设 ≈(,)=+ 其中与加性噪声成线性关系 您的函数应具有以下属性:

输出 y 作为形状为 (M,1) 的 np.array generate_linear_y 应该适用于任意 x、b 和 eps,只要它们是适当的尺寸,不要使用 for 循环分别计算每个 y[i],因为这对于大型 M 和 N 来说会非常慢。相反,您应该利用 numpy 线性代数。


他们希望我们编写如下代码:

def generate_linear_y(X,b):
""" Write a function that generates m data points from inputs X and b

Parameters
----------
X :   numpy.ndarray
      x.shape must be (M,N)
      Each row of `X` is a single data point of dimension N
      Therefore `X` represents M data points

b :   numpy.ndarray
      b.shape must be (N,1)
      Each element of `b` is a value of beta such that b=[[b1][b2]...[bN]]


Returns
-------
y :   numpy.ndarray
      y.shape = (M,1)
      y[i] = X[i]b
"""

有人可以帮助我,因为我完全糊涂了!我什至没有意识到我正在做的事情需要在 python 中进行数组编码,而我一直在努力解决这个问题!请帮忙!

4

1 回答 1

0

对我来说,这看起来像是直接的矩阵乘法。在 NumPy 中,这是使用矩阵乘法运算符@(aka np.matmul)实现的。

要生成随机噪声,您可以使用numpy.random、最有可能random_sample或中的函数standard_normal。如果您想以最正确的方式进行操作,您可以使用 创建一个随机数生成器default_rng,然后使用例如rng.standard_normal.

于 2020-04-29T04:48:55.870 回答