• Автор записи:
  • Рубрика записи:Scipy
  • Время чтения:6 минут чтения
  • Комментарии к записи:0 комментариев

scipy.stats.expon представляет собой непрерывную случайную величину. Он имеет различные виды функций экспоненциального распределения, такие как CDF, PDF, медиана и т. д.

Он имеет два важных параметра: loc для среднего значения и масштаб стандартного отклонения, поскольку мы знаем, что с помощью этих параметров мы контролируем форму и расположение распределения.

Синтаксис:

scipy.stats.expon.method_name(x,q,loc,scale,size)

Где параметры:

  • x (float или float of array_data): используется для указания случайной величины.
  • q (float или float of array_data): представляет вероятности.
  • loc: используется для указания среднего значения, по умолчанию оно равно 0.
  • scale: используется для указания стандартного отклонения, по умолчанию оно равно 1.
  • size: используется для указания выходной формы.

Вышеуказанные параметры являются общим параметром всех методов объекта scipy.stats.expon(). Методы приведены ниже:

  • scipy.stats.expon.CDF(): используется для кумулятивной функции распределения.
  • scipy.stats.expon.PDF(): используется для функции плотности вероятности.
  • scipy.stats.expon.rvs(): Чтобы получить случайные переменные.
  • scipy.stats.expon.stats(): используется для получения стандартного отклонения, среднего значения, эксцесса и асимметрии.
  • scipy.stats.expon.logPDF(): используется для получения журнала, связанного с функцией плотности вероятности.
  • scipy.stats.expon.logCDF(): используется для поиска журнала, связанного с кумулятивной функцией распределения.
  • scipy.stats.expon.sf(): используется для получения значений функции выживания.
  • scipy.stats.expon.isf(): используется для получения значений обратной функции выживания.
  • scipy.stats.expon.logsf(): используется для поиска журнала, связанного с функцией выживания.
  • scipy.stats.expon.mean(): используется для нахождения среднего значения, связанного с нормальным распределением.
  • scipy.stats.expon.median(): используется для нахождения медианы, связанной с нормальным распределением.
  • scipy.stats.expon.var(): используется для поиска дисперсии, связанной с распределением.
  • scipy.stats.expon.std(): используется для определения стандартного отклонения, связанного с распределением.

Давайте рассмотрим пример, используя один из упомянутых выше методов, чтобы узнать, как использовать методы с параметрами.

Импортируйте необходимые библиотеки, используя приведенный ниже код.

from scipy.stats import expon
import numpy as np
import matplotlib.pyplot as plt

Создайте массив, содержащий 30 значений, используя приведенный ниже код.

array_data = np.arange(-1,30,0.1)

Теперь постройте функцию плотности вероятности, обратившись к методу PDF() объекта expon модуля scipy.stats, используя приведенный ниже код.

expon_PDF_data = expon.pdf(array_data,0,2)
plt.plot(array_data,expon_PDF_data,'bo')
plt.show()

метод expon()

Содержание

Метод expi()

Python Scipy содержит метод expi() в модуле scipy.special, который используется для экспоненциальных интегралов. Экспоненциальный интеграл Ei — это особая функция на комплексной плоскости в математике. Он определяется как один определенный интеграл от отношения экспоненциальной функции к ее входу.

Синтаксис:

scipy.special.expi(x, out=None)

Где параметры:

  • x (array_data): это аргумент с действительным или комплексным значением.
  • out (ndarray): для результатов функции существует дополнительный выходной массив.

Метод expi() возвращает ndarray или скаляр.

Давайте рассмотрим пример, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
import numpy as np
from scipy import special
  • Создайте массив и передайте этот массив методу expi() для экспоненциального интеграла, как показано в приведенном ниже коде.
array_data = np.array([4, 1, 2, 3])
special.expi(array_data)
  • Снова предоставьте отрицательный массив, используя приведенный ниже код.
array_data = np.array([4, 1, 2, 3])
-special.expi(-array_data)

Метод expi()

Метод Curve_fit()

В Python SciPy есть метод Curve_fit() в модуле scipy.optimize, который подгоняет функцию к данным с использованием нелинейного метода наименьших квадратов.

Итак, здесь, в этом разделе, мы создадим экспоненциальную функцию и передадим эту функцию методу Curve_fit(), чтобы он соответствовал сгенерированным данным.

Синтаксис:

scipy.optimize.curve_fit(f, xdata, ydata, sigma=None, p0=None, absolute_sigma=True, bounds=(- inf, inf), check_finite=True, jac=None, method=None)

Где параметры:

  • f (вызываемая): функция модели представлена f(x,…). Первым входным параметром должна быть независимая переменная, а следующие аргументы должны быть подходящими параметрами.
  • xdata (array_data): независимая переменная используется для сравнения данных.
  • ydata (array_data): зависимые данные представляют собой M-мерный массив.
  • p0 (array_data): для параметров это первое предположение. Если ничего не указано, все начальные значения будут равны одному.
  • sigma (массив M*M): этот подход определяет непредсказуемость ydata. Мы получаем r = ydata – f(xdata, *popt), когда используем формулу r = ydata – f(xdata, *popt) для расчета остатков. f(xdata, *popt) для расчета остатков, мы получаем r = ydata – f(xdata, *popt).
  • Absolute_sigma (boolean): если True, сигма используется в строгом значении, и ковариация параметра pcov генерируется для отражения этих строгих значений.
  • check_finite (boolean): если True, проверьте входные массивы на наличие nan infs и выдайте ValueError, если они существуют.
  • borders (кортеж array_data): нижняя и верхняя границы параметров не указаны по умолчанию. Члены кортежа должны быть либо массивом, либо скаляром той же длины, что и количество параметров.
  • method: используемый метод оптимизации. Для получения дополнительной информации см. Наименьшие квадраты. Если указаны границы, по умолчанию используется значение «trf» для неограниченных задач и «lm» для ограниченных задач. Метод lm не будет работать, если количество наблюдений меньше количества переменных; вместо этого используйте «dogbox» или «trf».
  • jac(string, callable, none): матрица Якоби функции модели в терминах параметров генерируется как плотная структура, подобная массиву, с сигнатурой jac(x,…). Предоставленная сигма будет использоваться для ее масштабирования.

Давайте рассмотрим пример, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt
%matplotlib inline
  • Определите экспоненциальную функцию, используя приведенный ниже код.
def expfunc(x, y, z, s):
    return y * np.exp(-z * x) + s
  • Определите данные так, чтобы они могли быть дополнены шумом и подходили для параметров функции expfunc, а также ограничили оптимизацию определенной областью, используя приведенный ниже код.
x_data = np.linspace(0, 5, 60)
y_data = expfunc(x_data, 3.1, 2.3, 1.0)
random_numgen = np.random.default_rng()
noise_y = 0.3 * random_numgen.normal(size=x_data.size)
data_y = y_data + noise_y
plt.plot(x_data, data_y, 'b-', label='data')

p_opt, p_cov = optimize.curve_fit(expfunc, x_data, data_y)
plt.plot(x_data, expfunc(x_data, *p_opt), 'r-',
         label='fit: a=%5.3f, b=%5.3f, c=%5.3f' % tuple(p_opt))

Метод Curve_fit()

Метод expm()

Модуль Python SciPy scipy.linalg содержит метод expm(), который использует аппроксимацию Паде для вычисления матричной экспоненты.

Синтаксис:

scipy.linalg.expm(A)

Где параметр A принимает матрицу типа массива.

Метод expm() возвращает экспоненту матрицы A типа ndarray.

Давайте рассмотрим пример, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
from scipy import linalg
import numpy as np
  • Создайте матрицу и вычислите экспоненту этой матрицы, используя приведенный ниже код.
mat = np.array([[4.0, 2.0], [6.0, -2.0]])
linalg.expm(2j*mat)

Метод expm()

Метод exponential()

Экспоненциальную модель можно использовать для расчета регрессии ортогонального расстояния. Для этого в Python SciPy есть метод exponential() в модуле scipy.odr.

Синтаксис:

scipy.odr.exponential =

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

Давайте рассмотрим пример, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
import numpy as np
from scipy import odr
  • Сгенерируйте данные x и y, используя приведенный ниже код.
x_data = np.linspace(0.0, 8.0)
y_data = -20.0 + np.exp(0.8*x_data)
  • Подгоните данные, используя метод odr() из SciPy.
odr_data = odr.Data(x_data, y_data)
  • Теперь передайте экспоненциальную модель odr.exponential и данные в метод ODR() для создания объекта odr, используя приведенный ниже код.
obj_odr = odr.ODR(odr_data, odr.exponential)
  • Выполните метод регрессии созданного выше объекта, используя приведенный ниже код.
result = obj_odr.run()
print(result.beta)

метод odr()

Вот как использовать метод odr() Python SciPy для экспоненциальной модели для расчета регрессии ортогонального расстояния.

Метод interp1d()

Python SciPy содержит метод interp1d(), который принимает массивы значений x и y для аппроксимации функции f: y = f(x). Здесь мы передадим экспоненциальную функцию или значения в метод interp1d().

Синтаксис:

scipy.interpolate.interp1d(x, y, axis=- 1, kind='linear', copy=True, fill_value=nan, bounds_error=None, assume_sorted=False)

Где параметры:

  • x (array_data): одномерный массив действительных значений.
  • y (array_data): массив ND с действительным знаком. Вдоль оси интерполяции длина y должна равняться длине x.
  • axis (int): интерполировать вдоль указанной оси Y. Последняя ось y используется для интерполяции.
  • kind (int, str): в виде строки или целого числа указывает тип используемой интерполяции и порядок применения сплайн-интерполятора.
  • copy (boolean): если True, класс копирует x и y внутрь. Если значение равно False, используются ссылки x и y. Копирование — настройка по умолчанию.
  • fill_value (array_data): это значение будет использоваться для заполнения желаемых точек за пределами диапазона данных, если это ndarray(или число с плавающей запятой). Если значение не указано, по умолчанию используется NaN. Подобный массиву должен правильно транслироваться в размеры неинтерполяционных осей.
  • borders_error (boolean): если значение равно True, каждый раз, когда интерполяция выполняется для значения, находящегося за пределами диапазона x, возникает ошибка ValueError. Если значение равно False, значение заполнения присваивается значениям, выходящим за пределы. Если не указано значение fill value=»экстраполировать», по умолчанию возникает ошибка.
  • предполагается, что сортировка (логическое значение): если значение равно False, значения x могут находиться в любой последовательности и сортируются в первую очередь. Если True, x должен быть массивом возрастающих значений в монотонном порядке.

Давайте рассмотрим пример, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt
import numpy as np
  • Сгенерируйте значения x и y и передайте оба значения в метод interp1d(), используя приведенный ниже код.
x_val = np.arange(0, 20)
y_val = np.exp(-x_val/4.0)
fun = interp1d(x_val, y_val)
  • Создайте новые значения xdata и ydata, используя приведенный ниже код.
xdata = np.arange(0, 15, 0.1)
ydata = fun(xdata)
  • Постройте приведенные выше данные, используя приведенный ниже код.
plt.plot(x_val, y_val, 'o', xdata, ydata, '-')
plt.show()

етод interp1d()

Добавить комментарий