我知道你可以用seaborn.distplot公司将数据绘制成直方图并在其上叠加分布。我知道有一个参数允许您传入一个pdf函数来执行此操作。在源代码中,它看起来像是在内部调用fit()来进行训练。我想知道是否有一种方法可以预先训练模型,然后直接使用它。你知道吗
我尝试过使用lambda函数来表示我的分布,但是我不断地得到错误。 我还尝试将参数传递到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
原则上,不可能为seaborn的
fit
提供任何参数。这是由于源代码中的lineparams = fit.fit(a)
。你知道吗但是,通过提供一个提供
fit()
和pdf()
方法的对象并修改此对象中的参数,似乎可以欺骗seaborn。你知道吗相关问题 更多 >
编程相关推荐