Рубрики
Без рубрики

NP.Polyfit () – Curve Fitting с Numpy Polyfit

Функция .polyfit (), принимает три разных значения входных значений: X, Y и полиномиальная степень. Аргументы x и y соответствуют значениям точек данных, которые мы хотим соответствовать, на осях x и y соответственно. Третий параметр указывает степень нашей полиномиальной функции. Например, чтобы получить линейную посадку, … np.polyfit () – Кривая фитинга с Numpy Polyfit Подробнее »

Автор оригинала: Andrea Ridolfi.

. Polyfit () Функция, принимает три разных значения входных данных: х , y и полиномиальная степень. Аргументы x и y Соответствует значениям точек данных, которые мы хотим соответствовать, на х и y оси соответственно. Третий параметр указывает степень нашей полиномиальной функции. Например, чтобы получить линейную посадку, используйте степень 1.

Что такое кривая фитинга?

Кривая фитинга состоит в создании математической функции, которая способна соответствовать некоторым конкретным точкам данных. Большую часть времени, уравнение подходящего уравнения подвергается ограничениям; Кроме того, также возможно создать первоначальную предположение для предоставления полезных отправных точек для оценки примерных параметров, эта последняя процедура обладает преимуществом снижения вычислительной работы. В этой статье мы исследуем Numpy функция .Polyfit () , который позволяет создавать многочленные функции FIT очень простым и немедленным образом.

Линейный посадка

Самый простой тип Fit – это линейная посадка (первая полиномальная функция), в которой точки данных оснащены прямой линией. Общее уравнение прямой линии:

y + Q.

Где называется «M» Угловой коэффициент и “Q” перехватить Отказ Когда мы применяем линейную посадку, мы в основном ищем значения для параметров «m» и «q», которые дают наилучшее подходящее для наших точек данных. В Numpy, функция np.polyfit () является очень интуитивным и мощным инструментом для установки данных на данных; Давайте посмотрим, как поместить случайную серию точек данных с прямой.

В следующем примере мы хотим применить линейный подходящий для некоторых точек данных, описанных массивами х и уход . Polyfit () Функция, принимает три разных значения входных данных: х , y и полиномиальная степень. В то время как х и уход Соответствует значениям точек данных, которые мы хотим соответствовать, на х и y оси соответственно; Третий параметр указывает степень нашей полиномиальной функции. Поскольку мы хотим линейную посадку, мы укажем степень, равную 1. Выходы Polyfit () Функция будет список, содержащий параметры подходящих; Первый, тот, который в функции умножается на самый высокий уровень степени; Другие затем следуют по этому заказу.

import numpy as np
from numpy import random  #it will be useful for generating some random noise (on purpose) in the data points that we want to fit
import matplotlib.pyplot as plt  #for plotting the data

#---LINEAR FIT----

#generate the x array
x = np.linspace(0,60,60) # generate an array of 60 equally space points

#generate the y array exploiting the random.randint() function to introduce some random noise
y = np.array([random.randint(i-2, i+2) for i in x]) #each element is a random number with value between +-2 the respective x axis value

#Applying a linear fit with .polyfit()
fit = np.polyfit(x,y,1)
ang_coeff = fit[0]
intercept = fit[1]
fit_eq = ang_coeff*x + intercept  #obtaining the y axis values for the fitting function

#Plotting the data
fig = plt.figure()
ax = fig.subplots()
ax.plot(x, fit_eq,color = 'r', alpha = 0.5, label = 'Linear fit')
ax.scatter(x,y,s = 5, color = 'b', label = 'Data points') #Original data points
ax.set_title('Linear fit example')
ax.legend()
plt.show()

Как упоминалось ранее, переменная подходит будет содержать параметры примерки. Первый – угловой коэффициент, последний перехват. На этом этапе, чтобы построить нашу посадку, мы должны создать значения оси Y из полученных параметров, используя исходные значения оси X. В примере этот шаг описывается определением fit_eq Переменная. Последняя оставшаяся вещь – построить данные и уравнение подходящего. Результатом является:

Полиномиальная подгонка второй степени

Во втором примере мы создадим многочленную подгонку второй степени. Полиномиальные функции этого типа описывают параболическую кривую в XY самолет; Их общее уравнение:

y 2 + bx + c

где А , B а также C . являются параметрами уравнения, которые мы оцениваем при создании функции подгонки. Точки данных, которые мы подойдем в этом примере, представляют траекторию объекта, которая была брошена с неизвестной высоты. Эксплуатировать .Polyfit () Функция, мы будем соответствовать траектории падающего объекта, и мы также получим оценку для его начальной скорости в направлении X, V 0 Отказ

#-----POLYNOMIAL FIT----
x = np.array([1.2,2.5,3.4,4.0,5.4,6.1,7.2,8.1,9.0,10.1,11.2,12.3,13.4,14.1,15.0]) # x coordinates
y = np.array([24.8,24.5,24.0,23.3,22.4,21.3,20.0,18.5,16.8,14.9,12.8,10.5,8.0,5.3,2.4]) # y coordinates
fit = np.polyfit(x, y, 2)
a = fit[0]
b = fit[1]
c = fit[2]
fit_equation = a * np.square(x) + b * x + c
#Plotting
fig1 = plt.figure()
ax1 = fig1.subplots()
ax1.plot(x, fit_equation,color = 'r',alpha = 0.5, label = 'Polynomial fit')
ax1.scatter(x, y, s = 5, color = 'b', label = 'Data points')
ax1.set_title('Polynomial fit example')
ax1.legend()
plt.show()

После инициализации х и y Массивы, определяющие траекторию объекта, мы применяем функцию .Polyfit () На этот раз вставляется «2» как степень функции полинома. Это связано с тем, что траектория падающего объекта может быть описана полиномом второй степени; В нашем случае соотношение между х и y Координаты даны:

y 0 – ½ (G/V 0 2 ) X 2

где y 0 является начальным положением (высота, из которой объект был брошен), G Ускорение гравитации (̴9,81 м/с 2 ) и V 0 Начальная скорость (м/с) в X-направлении (посещение: https://en.wikipedia.org/wiki/equations_for_a_falling_body Для более подробной информации). Затем мы назначаем в переменные А , b и C . Значение 3 параметра установки и определяем Fit_equation , полиномиальное уравнение, которое будет нанесено; Результатом является:

Если мы сейчас распечатаем три параметра подходящих, а, б и слияние Мы получаем следующие значения: A = -0.100, 0,038, 0,92. В уравнении, описывающие траекторию падающего тела, нет B срок; Поскольку посадка всегда является приближением реального результата, мы всегда будем получать значение для всех параметров; Однако мы заметим, что ценность нашего B Срок гораздо меньше, чем у других, и может быть как-то забывает, при сравнении нашей посадки с уравнением, описывающим физику проблемы. C . Термин представляет собой начальную высоту ( y 0 ) пока А Срок описывает количество – ½ (G/V 0 2 ) Отказ Следовательно, начальная скорость V 0 дан кем-то:

v0 = 2-g2a

Удача окончательного значения V 0 .979 м/с.

Оригинал: “https://blog.finxter.com/np-polyfit/”