Saltar al contenido

ajuste de curva numpy/scipy de Python

Basta ya de indagar por todo internet porque llegaste al lugar justo, tenemos la respuesta que buscas sin problema.

Solución:

Le sugiero que comience con un ajuste polinomial simple, scipy.optimize.curve_fit trata de ajustar una función f que debes conocer a un conjunto de puntos.

Este es un ajuste polinomial simple de 3 grados usando numpy.polyfit y poly1del primero realiza un ajuste polinomial de mínimos cuadrados y el segundo calcula los nuevos puntos:

import numpy as np
import matplotlib.pyplot as plt

points = np.array([(1, 1), (2, 4), (3, 1), (9, 3)])
# get x and y vectors
x = points[:,0]
y = points[:,1]

# calculate polynomial
z = np.polyfit(x, y, 3)
f = np.poly1d(z)

# calculate new x's and y's
x_new = np.linspace(x[0], x[-1], 50)
y_new = f(x_new)

plt.plot(x,y,'o', x_new, y_new)
plt.xlim([x[0]-1, x[-1] + 1 ])
plt.show()

ingrese la descripción de la imagen aquí

Primero deberá separar su numpy array en dos matrices separadas que contienen valores x e y.

x = [1, 2, 3, 9]
y = [1, 4, 1, 3]

curve_fit también requiere una función que proporcione el tipo de ajuste que le gustaría. Por ejemplo, un ajuste lineal usaría una función como

def func(x, a, b):
    return a*x + b

scipy.optimize.curve_fit(func, x, y) devolverá un numpy array que contiene dos matrices: la primera contendrá valores para a y b que mejor se ajuste a sus datos, y el segundo será la covarianza de los parámetros de ajuste óptimo.

Aquí hay un ejemplo de un ajuste lineal con los datos que proporcionó.

import numpy as np
from scipy.optimize import curve_fit

x = np.array([1, 2, 3, 9])
y = np.array([1, 4, 1, 3])

def fit_func(x, a, b):
    return a*x + b

params = curve_fit(fit_func, x, y)

[a, b] = params[0]

Este código regresará a = 0.135483870968 y b = 1.74193548387

Aquí hay un gráfico con sus puntos y el ajuste lineal… que claramente es malo, pero puede cambiar la función de ajuste para obtener cualquier tipo de ajuste que desee.

ingrese la descripción de la imagen aquí

Calificaciones y comentarios

Tienes la opción de añadir valor a nuestro contenido asistiendo con tu experiencia en las ilustraciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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