zoukankan      html  css  js  c++  java
  • 【574】KDE与正态分布

    参考:scipy.stats.norm函数

    参考:核密度估计Kernel Density Estimation(KDE)概述 密度估计的问题

      按照自己的理解说明下大致的思路,就是已知一些点信息,然后计算周围所有的点与已知点之间的一个函数,通过这个函数可以得到一个结果,就是最终核密度估计的结果,这个函数就是一个核函数,我们可以通过高斯核函数来进行测验。首先定义一个高斯分布的函数:

    $$f(x)=frac{1}{sqrt{2pi}sigma} ext{exp}left(-frac{(x-mu)^2}{2sigma^2} ight)$$

      然后给定三个数 5、10、15,之后计算 3.5 到 16.5 之间数字的值

      代码

    import math
    def norm_alex(x, loc=0, scale=1):
        return np.e**(-1*(x-loc)**2/2/scale**2)/math.sqrt(2*np.pi)/scale
    
    nums = [5, 10, 15]
    def kde(x, loc=0, scale=1):
        s = 0
        for num in nums: 
            s += norm_alex(x-num, loc, scale)
        return s/3 
    
    def kde_np(XX, loc=0, scale=1):
        yy = np.zeros_like(XX)
        for i in range(len(yy)):
            yy[i] = kde(XX[i], loc, scale)
        return yy 
    
    XX = np.linspace(3.5, 16.5, num=800)
    yy = kde_np(XX, loc=0, scale=0.4)
    plt.plot(XX, yy)
    

      效果:

     


      通过 scipy.stats.norm 来计算正态分布,看如下的例子

      代码:

    from scipy import stats
    import numpy as np 
    import matplotlib.pyplot as plt
    
    gauss = stats.norm(loc=0, scale=0.5)
    
    X = np.linspace(-5,5,num=400)
    y = gauss.pdf(X) 
    
    plt.plot(X, y)
    

      效果: 

  • 相关阅读:
    js把日期字符串转换成时间戳
    JS array 数组
    for循环中的if嵌套
    第三章:图像增强
    直方图均衡化
    第二章:数字图像处理基础
    马赫带效应
    图片格式
    4邻接,8邻接和m邻接
    第一章:绪论
  • 原文地址:https://www.cnblogs.com/alex-bn-lee/p/14890023.html
Copyright © 2011-2022 走看看