¿Cómo implementar la interpolación lineal en Python?

La interpolación lineal es la técnica de determinar los valores de las funciones de cualquier punto intermedio cuando se conocen los valores de dos puntos adyacentes. La interpolación lineal es básicamente la estimación de un valor desconocido que cae dentro de dos valores conocidos. La interpolación lineal se usa en varias disciplinas como estadística, economía, determinación de precios, etc. Se usa para llenar los vacíos en los datos estadísticos en aras de la continuidad de la información. 

 

Al usar la siguiente fórmula, podemos interpolar linealmente el punto de datos dado 

Linear Interpolation : y(x)  =  y1  +  (x - x1)  \frac{(y2 - y1) }{ (x2 - x1)}

Aquí (x1, y1) son las coordenadas del primer punto de datos. Y (x2,y2 ) son las coordenadas del segundo punto de datos, donde x es el punto en el que realizamos la interpolación e y es el valor interpolado.

Problema de ejemplo:

Pongamos un ejemplo para una mejor comprensión. Tenemos los siguientes valores de datos donde x denota el número e y es la función de la raíz cuadrada de x. Nuestra tarea es encontrar la raíz cuadrada de 5.5 (x) .

X

1

2

3

4

5

6

y ( f(x) = √x ) 

1

1.4142

1.7320

2

2.2360

2.4494

Podemos usar el método de interpolación lineal aquí.

1. Encuentra los dos adyacentes (x1, y1) ,(x2,y2) del xie (5,2.2360) y (6,2.4494).

Donde x1 = 5, x2= 6, y1 = 2.2360, y2 = 2.4494 e interpolamos en el punto x = 5.5.

2. Usando la fórmula y(x) = y1 + (x – x1) \frac{(y2 – y1) }{ (x2 – x1)}y(x) = y1 + (x - x1) \frac{(y2 - y1) }{ (x2 - x1)}

3. Después de poner los valores en la ecuación anterior. 

y = 2.2360+(5.5-5)\frac{(2.4494-2.2360)}{(6 - 5)}
y = 2.3427

En x = 5,5 el valor de Y será 2,3427. Entonces, al usar la interpolación lineal, podemos determinar fácilmente el valor de una función entre dos intervalos.

Enfoque 1:

Usando la fórmula Interpolación lineal: y(x) = y1 + (x - x1) \frac{(y2 - y1) }{ (x2 - x1)}

Ejemplo: Supongamos que tenemos un conjunto de datos de la población de una ciudad y el año.

X(Año)

2016

2017

2018

2019

2021

Y(Población)

10001

12345

74851

12124

5700

Aquí, X es el año e Y es la población de cualquier ciudad. Nuestra tarea de encontrar la población de la ciudad en el año 2020.

Elegimos nuestro (x1, y1) ,(x2,y2) como x1=2019 , y1=12124, x2=2021, y2=5700, x = 2020, y = ?

Aquí (x1, y1) y (x2, y2) son dos puntos adyacentes y x es el año para el que queremos predecir el valor de la población y.

Python3

# Python3 code
# Implementing Linear interpolation
# Creating Function to calculate the
# linear interpolation
 
def interpolation(d, x):
    output = d[0][1] + (x - d[0][0]) * ((d[1][1] - d[0][1])/(d[1][0] - d[0][0]))
 
    return output
 
# Driver Code
data=[[2019, 12124],[2021, 5700]]
 
year_x=2020
 
# Finding the interpolation
print("Population on year {} is".format(year_x),
             interpolation(data, year_x))
Producción

Population on year 2020 is 8912.0

Enfoque 2:

Usando scipy.interpolate.interp1d

De manera similar, podemos lograr una interpolación lineal usando una función de biblioteca scipy llamada interpolate.interp1d.

Sintaxis : scipy.interpolate.interp1d(x, y, kind=’linear’, axis=- 1, copy=True,bounds_error=Ninguno, fill_value=nan, asumir_sorted=False)

No Señor.            

Parámetros                        

Descripción

1.

X

Una array 1-D de valores reales.

2.

y

Una array ND de valores reales.

3.

tipo

es decir, el tipo de interpolación que desea puede ser ‘lineal’, ‘más cercano’, ‘más cercano’, ‘cero’, ‘slinear’, ‘cuadrático’, ‘cúbico’, ‘anterior’ o ‘siguiente’. ‘cero’, ‘slinear’, ‘quadratic’ y ‘cubic’, por defecto es lineal .

4.

eje

Especifica el eje de y a lo largo del cual interpolamos.

5.

Copiar

Contiene valores booleanos si es True, la clase hace copias internas de x e y.

6.

límites_error

Contiene valores booleanos. Si es verdadero, se genera un ValueError cuando se intenta la interpolación en un valor fuera del rango de x.

Ejemplo:

Tengamos un conjunto de datos aleatorio:

X = [1,2,3,4,5], Y = [11,2.2,3.5,-88,1] y queremos encontrar el valor de Y en el punto 2.5.

Python3

# Implementation of Linear Interpolation using Python3 code
# Importing library
from scipy.interpolate import interp1d
 
X = [1,2,3,4,5] # random x values
Y = [11,2.2,3.5,-88,1] # random y values
 
# test value
interpolate_x = 2.5
 
# Finding the interpolation
y_interp = interp1d(X, Y)
print("Value of Y at x = {} is".format(interpolate_x),
      y_interp(interpolate_x))

Producción

Value of y at x = 2.5 is 2.85

Publicación traducida automáticamente

Artículo escrito por amnindersingh1414 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *