У меня есть таблица, как InputЧтобы найти уравнение между двумя колоннами
A B
3 20
5 30
6 35
мне нужен алгоритм, чтобы выяснить формулу (уравнение), связанных с двумя колонками А и В
Выход
B=(A+1)*5
У меня есть таблица, как InputЧтобы найти уравнение между двумя колоннами
A B
3 20
5 30
6 35
мне нужен алгоритм, чтобы выяснить формулу (уравнение), связанных с двумя колонками А и В
Выход
B=(A+1)*5
Если формула первого порядка линейна, как в примере, тогда yo U ищут:
http://en.wikipedia.org/wiki/Linear_regression
или это для линейных уравнений высших порядков
Линейная регрессия не подходит, если формула не в первом порядке !! ! –
О да. Я думал, что линейный означает первый порядок. моя вина. Благодарю. фиксированный ответ – fsw
один относительно простой подход должен был бы использовать кривую наименьших квадратов для различных семейств кривых (скажем, полиномы до степени n-2, экспоненты, степенные законы) и ищем один с минимальным остатком. Это даст вам приблизительные формулы (если только вы не принимаете только кривую с нулевым остатком), но, возможно, это нормально для вашего приложения?
Предполагая, что формула, которую вы хотите, является полиномом.
Что мы знаем? Для списка значений A мы имеем их значения B. При значениях «n» A наилучший полином, который мы можем найти, имеет (n-1) -й степени. Зачем?
В основном я решения линейной системы, как в следующем:
x + Ay + (A^2)z = B
С Например:
x + 3y + 9z = 20
x + 5y + 25z = 30
x + 6y + 35z = 35
После решения этого мы можем найти, что (х, у, г) = (5, 5, 0). Это означает, что наш полином равен 5 + 5A + 0 (A^2), то есть в основном тот же B = (A + 1) * 5, который вы показали в примере.
Мы можем решить систему, используя любой метод. Не знаю, если это поможет, но я брошу некоторый код здесь, чтобы решить с методом исключения Гаусса (в Python):
def solve(A, B):
n = len(A)
M = [[a**i for i in range(n)]+[b] for a,b in zip(A,B)]
for i in range(n):
M[i] = [x/M[i][i] for x in M[i]]
for j in range(n):
if j==i: continue
M[j] = [xj - xi * M[j][i] for xi, xj in zip(M[i], M[j])]
return [M[i][-1] for i in range(n)]
print solve([3,5,6], [20, 30, 35])
Эта формула не работает для первого ряда ... –
рассмотрен вопрос это алгоритм, чтобы найти связь между двумя столбцами..ie, для таблицы I/P. Мне нужен алгоритм для вычисления (выяснить) формулы как O/P – Yoshi