当前位置: 首页 > 知识库问答 >
问题:

如何访问Sklearn的KDE参数用于SCIPY的Kolmogorov-Smirnov测试?

澹台承载
2023-03-14

我有一个一维离散数据集。在这个集合上,我想用Sklearn的内置函数执行一个内核密度估计:

from sklearn.neighbors.kde import KernelDensity

data = ... # array of shape [5000, 1]

## perform kde with gaussian kernels
kde = KernelDensity(kernel='gaussian', bandwidth=0.8).fit(data.reshape(-1, 1))

在KDE的实例方法score_samples的帮助下,我能够绘制底层密度函数的合理估计:

## code for plot
X_plot = np.linspace(-5, 100, 10000)[:, np.newaxis]
log_dens = kde.score_samples(X_plot)

plt.plot(X_plot[:, 0], np.exp(log_dens))

我想使用这个发行版来执行一个单样本KS测试。我发现,scipy已经实现了这个功能。查一下这里的文件。上面写着:

基本上,rvs是新的样本数据,cdf是累积分布函数(pdf的积分)。我无法找到如何在sklearn中访问计算pdf的函数,以便将其集成并提供给KSTEST。

有人知道怎么去那里吗?此外,如果有任何替代这一方法,请让我知道。

共有1个答案

令狐宏伟
2023-03-14

您可以简单地集成score_samples来获得CDF。scipy.integrate.quad可能有效。

**编辑**似乎score_samples是日志密度,但当未记录时,集成为1。但是需要一些重新塑造,不幸的是,scipy集成边界不接受数组

def cdf(y):
    return functools.partial(
        scipy.integrate.quad,
        lambda x: np.exp(kde.score_samples(np.array([x]).reshape(-1,1)))[0],
        -np.inf
    )(y)[0]

def array_cdf(X):
    return np.array(list(map(cdf, X)))

scipy.stats.kstest(data, array_cdf)
 类似资料:
  • 我使用的是内核密度估计(KDE)的SciPy实现(http://docs.SciPy.org/doc/SciPy/reference/generated/SciPy.stats.gaussian_kde.html),到目前为止工作良好。然而,我现在想要获得KDE在一个特定点的梯度。 我已经查看了库的Python源代码,但还没有弄清楚如何轻松实现这个功能。有人知道这样做的方法吗?

  • 问题内容: 您如何访问“工作流程” Jenkins作业的“此构建已参数化”部分中的设置? 测试用例 创建一个工作流作业。 启用“此构建已参数化”。 添加具有默认值的STRING PARAMETER 。 将以下代码添加到: 运行工作。 结果 问题答案: 我认为使用Workflow插件时,变量可以直接使用,而不是通过env。尝试:

  • 问题内容: 我有一个应用程序,它基本上是服务的代理。该应用程序本身是在Jersey上构建的,由Jetty提供。我有这个资源方法: 用户提交POST表单。所有POST请求都通过此方法。除了一个细节外,UriInfo和HttpServletRequest被适当地注入:似乎没有参数。这是我从终端发送的请求: 此处的POST正文显然包含两个参数:foo和biz。但是,当我尝试在代码()中获取它们时,结果是

  • 问题内容: 该模块为通用类型提示提供了一个基类:该类。 方括号中的接受类型参数的子类,例如: 我的问题是,如何访问这些类型参数? 也就是说,作为输入,我如何获得和输出? 基本上我正在寻找这样的功能 问题答案: Python 3.8更新 从Python3.8开始,有: PEP-560还提供了,它允许我们使用第 n 个通用基的参数: 旧答案 可能性1 从Python 3.6开始。有一个公共和()字段。

  • 我有一个应用程序,基本上是一个服务的代理。该应用程序本身是基于Jersey构建的,由Jetty提供服务。我有这个资源方法: 用户提交POST表单。所有POST请求都通过此方法。UriInfo和HttpServletRequest被适当地注入,除了一个细节:似乎没有参数。这是我从终端发送的请求: 这里,POST正文显然包含两个参数:foo和biz。但当我尝试在代码中获取它们时(),结果是一个大小为0

  • 我正在尝试从Spring Boot应用程序中的JUnit中访问application.properties或application-test.properties。 com.myservice.config.AppConfig: 主/资源/应用程序.属性: test.resources/application-test.properties JUnit类可以从main/resources/appl