набор питона python / scipy

У меня есть несколько моментов, и я стараюсь соответствовать кривой для этих целей. Я знаю, что существует функция scipy.optimize.curve_fit , но я не понимаю документацию, то есть как использовать эту функцию.

Мои поты: np.array([(1, 1), (2, 4), (3, 1), (9, 3)])

Кто-нибудь может объяснить, как это сделать?

3 Solutions collect form web for “набор питона python / scipy”

Я предлагаю вам начать с простого полиномиального соответствия, scipy.optimize.curve_fit пытается подогнать функцию f которую вы должны знать, к набору точек.

Это простой numpy.polyfit полиномиальный numpy.polyfit использующий numpy.polyfit и poly1d , первый выполняет полиномиальное соответствие по методу наименьших квадратов, а второй вычисляет новые точки:

 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() 

введите описание изображения здесь

Сначала вам нужно отделить свой массив numpy от двух отдельных массивов, содержащих значения x и y.

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

curve_fit также требует функцию, которая предоставляет тип соответствия. Например, линейная подгонка будет использовать функцию типа

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

scipy.optimize.curve_fit(func, x, y) вернет массив numpy, содержащий два массива: первый будет содержать значения для a и b которые наилучшим образом соответствуют вашим данным, а вторая будет ковариацией оптимальных параметров подгонки.

Ниже приведен пример линейной подгонки с предоставленными вами данными.

 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] 

Этот код вернет a = 0.135483870968 и b = 1.74193548387

Вот сюжет с вашими точками и линейная подгонка … что явно плохо, но вы можете изменить функцию фитинга, чтобы получить любой тип приспособления, который вам хотелось бы.

введите описание изображения здесь

Библиотека подбора кривой python pyeq2, лицензия BSD доступна в Репозитории Google Code по адресу:

https://github.com/zunzun/pyeq2

Он поставляется со многими примерами, включая параллельное программирование и пользовательские функции, и вы можете попробовать его онлайн бесплатно:

http://zunzun.com

Я автор, поэтому, если у вас есть вопросы, напишите мне прямо по электронной почте zunzun@zunzun.com – я сделаю все возможное, чтобы помочь вам и запустить вас с примерами.

  • Путаница между numpy, scipy, matplotlib и pylab
  • Networkx: Различия между pagerank, pagerank_numpy и pagerank_scipy?
  • numpy.void type - как его использовать?
  • Снимите изображение с помощью scikit-image
  • scipy interp2d / bisplrep неожиданный выход при заданном 1D входе
  • Минимизация функций с большими градиентами с помощью `scipy.optimize.minimize`
  • Быстрое (er) причудливое индексирование и сокращение?
  • Вычислить подмножество матричного умножения
  • Python - лучший язык программирования в мире.