Как заставить регрессию поверхности иметь положительные значения? - PullRequest
0 голосов
/ 23 февраля 2019

Ниже приведен мой код для выполнения квадратичной регрессии.Входные данные для функции представляют собой набор точек данных, все положительные, и с их помощью я создаю поверхность, соответствующую данным.

Однако проблема в том, что моя вычисленная поверхность имеет отрицательные значения.Чтобы поддерживать правильную физику, мне нужно, чтобы моя поверхность содержала только положительные значения (по крайней мере, для положительных параметров x и y), поскольку в конечном итоге я минимизирую поверхность (z), чтобы получить набор физических параметров (x, y).

  • Есть ли способ заставить поверхность иметь положительные значения z для любых x и y?
  • Возможно, есть лучший способ сделать регрессию (точнее или быстрее)?Квадратичный метод выбран произвольно.

.

data = np.column_stack((x, y, z))

# Regular grid covering the domain of the data
X, Y = np.meshgrid(x, y)
XX = X.flatten()
YY = Y.flatten()


# Best-fit quadratic curve
A = np.c_[np.ones(data.shape[0]), data[:, :2], np.prod(data[:, :2], axis=1), data[:, :2]**2]

C, _, _, _ = scipy.linalg.lstsq(A, data[:, 2])

# evaluate it on a grid
Z = np.dot(np.c_[np.ones(XX.shape), XX, YY, XX *YY, XX**2, YY**2], C).reshape(X.shape)
...