Мне известно, что вы можете использовать seaborn.distplot для отображения данных в виде гистограммы и наложения распределения поверх него.Мне известен параметр, который позволяет вам передать функцию pdf для этого.В исходном коде, похоже, что он внутренне вызывает fit () для обучения.Мне было интересно, есть ли способ предварительно обучить модель и просто использовать ее.
Я пытался использовать лямбда-функции, представляющие мое распределение, но я продолжал получать ошибки.Я также попытался передать параметры в seaborn.distplot, чтобы помочь обучению с нужными настройками, но это тоже не сработало.
Метод 1 - Использование лямбды для предварительно обученной модели:
import seaborn as sns
from scipy import stats
params = stats.exponweib.fit(data, floc=0, f0=1)
custom_weib = lambda x: stats.exponweib.pdf(x, *params)
sns.distplot(data, bins=bin_count, fit=custom_weib, norm_hist=True, kde=False, hist_kws={'log':True})
Я вижу это сообщение об ошибке: AttributeError: у объекта 'function' нет атрибута 'fit' ^ Он не может использовать предварительно обученную модель.
Метод 2 - Попытка передать параметры как часть метода подгонки. (Я не знаю, правильно ли я делаю это.)
import seaborn as sns
from scipy import stats
sns.distplot(data, bins=bin_count, norm_hist=True, kde=False, hist_kws=hist_kws, fit=stats.exponweib, floc=0, f0=1)
Я получаю это исключение: TypeError: distplot () получил неожиданный ключевой аргумент 'floc' ^ Очевидно, что я неправильно передаю переменные, но не знаю как.
Вот ссылка на исходный код Seaborn, если вам это нужно:https://github.com/mwaskom/seaborn/blob/master/seaborn/distributions.py