Полиномиальная интерполяция с использованием Sklearn

Опубликовано: 21 Февраля, 2023

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

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

Теперь, после понимания основ ньютоновской интерполяции, давайте напишем код на python. Мы будем использовать здесь данные о запасах Hindalco , чтобы развить эту технику. Мы просто посмотрим на набор данных и перейдем к основной проблеме, вы попробуете это с набором данных, который у вас есть.

Нам понадобится ridge (модуль, используемый для решения регрессионной модели, где функция потерь — это линейная функция наименьших квадратов, а регуляризация — L2), PolynomialFeature (Создать новую матрицу признаков, состоящую из всех полиномиальных комбинаций признаков со степенью, меньшей или равной указанной степени) и make_pipeline (это сокращение от конструктора Pipeline) для достижения требуемого результата.

Вот код полиномиальной интерполяции с использованием python pandas, Numpy и Sklearn.

Импорт библиотек и набора данных

Библиотеки Python позволяют нам очень легко обрабатывать данные и выполнять типичные и сложные задачи с помощью одной строки кода.

  • Pandas — эта библиотека помогает загружать фрейм данных в формате 2D-массива и имеет несколько функций для выполнения задач анализа за один раз.
  • Массивы Numpy очень быстрые и могут выполнять большие вычисления за очень короткое время.
  • Sklearn — этот модуль содержит несколько библиотек с предварительно реализованными функциями для выполнения задач от предварительной обработки данных до разработки и оценки моделей.

Python3




#import all the required files
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
  
#sklearn import
from sklearn.linear_model import Ridge
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline

Теперь давайте загрузим набор данных во фрейм данных панды. Вы можете скачать набор данных отсюда.

Python3




df = pd.read_excel("HINDALCO_1D.xlsx")
df.head()

Выход:

Python3




plt.figure(figsize=(10, 8))
df["close"].plot.line()
  
X = np.array(range(len(df["close"].index))).reshape(-1, 1)
y = df["close"]
models = []
for degree in range(3):
    model = make_pipeline(PolynomialFeatures(degree),
                          Ridge(alpha=0.001))
    model.fit(X, y)
    models.append(model)
    y_pred = model.predict(X)
    plt.plot(X, y_pred,
             linewidth=2,
             label="degree %d" % degree)
      
plt.legend(loc="upper left")
plt.scatter(X, y,
            s=20, marker="o",
            label="training points")
  
plt.show()

Выход: