Комментарии 9
Спасибо, долго искал решение задачи, и получил грамотно составленный ответ на него! Удачи в работе
Что-то мне подсказывает, что эта задача метода наименьших квадратов решается для обобщенного полинома более-менее легко и непринужденно.
В питоне принято вместо
писать
Но ещё лучше использовать numpy:
s1=sum([1/x[i] for i in range(0,n)])
писать
s1 = sum(1 / value for value in x)
Но ещё лучше использовать numpy:
import numpy as np
x, y = np.array(x), np.array(y)
s1 = np.sum(1 / x)
s2 = np.sum(1 / y)
s3 = np.sum(y / x)
...
Для этого в Python есть модуль scipy, но он не поддерживает отрицательную степень d полинома. Рассмотрим код реализации аппроксимации данных полиномом.
Не обязательно использовать линейный метод наименьших квадратов. Можно и нелинейный использовать, который, правда, уже так просто не реализуешь. Но функция же есть! :)
from scipy.optimize import curve_fit
def f(x, a, b):
return a + b/x
x=[10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62, 66, 70, 74, 78, 82, 86]
y=[0.1, 0.0714, 0.0556, 0.0455, 0.0385, 0.0333, 0.0294, 0.0263, 0.0238, 0.0217, 0.02, 0.0185, 0.0172, 0.0161, 0.0152, 0.0143, 0.0135, 0.0128, 0.0122, 0.0116]
popt, _ = curve_fit(f, x, y)
fit_y = [f(xi, popt[0], popt[1]) for xi in x]
import matplotlib.pyplot as plt
plt.plot(x, y, 'o', x, fit_y, '-')
Скрытый текст

А как питон в плане производительности при больших объёмах данных?
Такой же как и любой интерпретируемый язык — если удается сводить обработку к редким (относительно) вызовам сишных функций, то все хорошо, в противном случае — не очень
Вполне себе отлично, даже на вполне себе риалтайме уровня 15 000 000 событий в секунду, доставляемые Kafka в предсказательную модель на временных рядах.
Но кто-то и Hadoop разворачивает для поиска буковок в 15 Гб данных, где отлично справляется grep.
Но кто-то и Hadoop разворачивает для поиска буковок в 15 Гб данных, где отлично справляется grep.
Ну у меня следующая проблема: порой нужны фиты для набора в 100к точек и более. Ваять код на С было не очень удобно, я решил воспользоваться гнуплотом. Работает отлично, но функционал ограничен. Вот я и думаю: если питон будет это делать так же быстро (порядка нескольких секунд), то быть может стоит попробовать?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Простая программа на Python для гиперболической аппроксимации статистических данных