Полиномиальная интерполяция с использованием Sklearn
Полиномиальная интерполяция Ньютона — это способ точно подобрать набор точек данных, который мы также называем подбором кривой. Полином Ньютона также известен как интерполяционный полином Ньютона с разделенными разностями, потому что коэффициенты полинома рассчитываются с использованием метода разделенных разностей Ньютона . Разделенные разности (алгоритм, используемый для вычисления таблиц логарифмических и тригонометрических функций). Итак, полиномиальная интерполяция Ньютона представляет собой процесс рекурсивного деления для заданной последовательности точек данных, метод вычисляет коэффициенты интерполяционного полинома этих точек в форме Ньютона. Практически мы делаем это, используя предыдущие два элемента (слева), мы можем вычислить каждый элемент в таблице.
Существует разделенная таблица разностей, которая обобщает весь процесс нахождения этих коэффициентов. Вот пример с использованием пяти точек данных:
Теперь, после понимания основ ньютоновской интерполяции, давайте напишем код на 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() |
Выход: