Линейная регрессия и генерация данных ? = ?? + ? - PullRequest
0 голосов
/ 29 апреля 2020

У меня возникла проблема в ноутбуках Jupiter для кодирования с использованием python. Эта проблема о линейной регрессии. Это выглядит следующим образом:

1: линейная регрессия В этом блокноте мы сгенерируем данные из линейной функции: ? = ?? + ?, а затем решим для ?̂, используя OLS (обычные наименьшие квадраты) и градиентный спуск.

Вопрос 1.1: Генерация данных: ? = ?? + ? Здесь мы предполагаем ?≈? (?, ?) = ?? + ? где ? линейно по in с аддитивным шумом ? Ваша функция должна иметь следующие свойства:

выводить y как массив np.arize с shape (M, 1) 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, с которым я всегда борюсь! Пожалуйста, помогите!

1 Ответ

0 голосов
/ 29 апреля 2020

Для меня это выглядит как прямое умножение матриц. В NumPy это реализуется с помощью оператора умножения матриц @ (он же np.matmul).

Для генерации случайного шума можно использовать функции от numpy.random, наиболее вероятно random_sample или standard_normal. Если вы хотите сделать это наиболее корректным способом, вы можете создать генератор случайных чисел с default_rng, а затем использовать, например, rng.standard_normal.

...