Предсказать полиномиальные значения - PullRequest
1 голос
/ 06 апреля 2020

У меня есть данные, формирующие кривую. Я хочу подогнать его под предсказание следующих данных: сюжет

Зеленая линия - это реальные данные. Красные точки - это образцы, которые я использую для прогнозирования остальных данных. Синяя линия - результат моего прогноза.

Для этого я использую это:

fig = plt.figure('Line and predict')
plt.clf()
x = np.arange(0, len(peaks), 1)
plt.plot(x, peaks, 'r.')
real_peaks = np.flipud(np.array([372, 394, 418, 444, 474, 504, 538, 574, 614, 657, 705, 758, 817, 882, 955, 1039, 1133, 1241, 1365, 1509]))
peaks = np.flipud(np.array([504, 538, 574, 614, 657, 705, 758, 817, 882, 955, 1039, 1133, 1241, 1365, 1509]))
for i in range(6):
    print('peaks', peaks)
    pfit = self.__fit_polynome__(peaks)
    axis = np.linspace(0, len(peaks) + 1, 200)
    plt.xlabel('line')
    plt.ylabel('horizontal lines position')
    x = np.arange(0, len(peaks), 1)
    plt.plot(x_real_peaks, real_peaks, 'g',  axis, pfit(axis), 'b--')
    plt.draw()
    peaks = np. append(peaks, int(pfit(len(peaks))))


def __fit_polynome__(self, data):
        x = np.arange(0, len(data), 1)
        fit = np.polyfit(x, data, 4)
        pfit = np.poly1d(fit)
        return pfit

Поэтому я прогнозирую следующие данные и добавляю их в свои выборки, чтобы иметь возможность предсказать следующий. Как вы можете видеть на изображении, результат не идеален. Есть ли другой метод для достижения лучших результатов? Я пробовал UnivariateSpline или CubicSpline (scipy.interpolate), но это хуже всего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...