Понимание математики за ортогональной регрессией расстояния - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть фрагмент кода из репозитория Github о Регрессия ортогонального расстояния или Общая квадратичная ошибка оптимизация.

# Total Least Squares:
def line_total_least_squares(x,y):
    n = len(x)

    x_ = np.sum(x)/n
    y_ = np.sum(y)/n

    # Calculate the x~ and y~ 
    x1 = x - x_
    y1 = y - y_

    # Create the matrix array
    X = np.vstack((x1, y1))
    X_t = np.transpose(X)

    # Finding A_T_A and it's Find smallest eigenvalue::
    prd = np.dot(X,X_t)
    W,V = np.linalg.eig(prd)
    small_eig_index = W.argmin()
    a,b = V[:,small_eig_index] 

    # Compute C:
    c = (-1*a*x_) + (-1*b*y_)

    return a,b,c

a1,b1,c1 = line_total_least_squares(X,y)


# a1,b1,c1 = line_total_least_squares(X,y)
# in form of y = mx + c
# y = (-1*(c1/b1)) + x * -1*(a1/b1)

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

Может кто-нибудь, пожалуйста, объясните мне, если это возможно.

Заранее спасибо

...