机器学习的数学基础(1)——常见的函数与分布

最近有在系统的补数学基础,接下来会分享一些机器学习中最常见的数学函数与分布的Python实现。

1.对数函数

一般地,函数y=logax(a>0,且a≠1)叫做对数函数,也就是说以幂(真数)为自变量,指数为因变量,底数为常量的函数,叫对数函数。

1.1 简单的对数函数

实现代码如下所示:

import math
import matplotlib.pyplot as plt

if __name__ =="__main__":
    x = [float(i)/100 for i in range(1,300)]
    y = [math.log(i) for i in x]
    plt.plot(x,y,'r-',linewidth=2,label='logCurve')
    plt.legend(loc='upper left')
    plt.grid(True)
    plt.show()

绘制结果如下图所示:

这里写图片描述

1.2 常见对数函数的对比

实现代码如下所示:

import math
import numpy as np
import matplotlib.pyplot as plt


if __name__ == "__main__":
    x = np.arange(0.05,3,0.01)
    #绘制log1.5(x)曲线
    y1 = [math.log(a,1.5) for a in x]
    plt.plot(x,y1,linewidth=2,color='r',label='log1.5(x)')
    y2 = [math.log(a,2) for a in x]
    plt.plot(x,y2,linewidth=2,color='g',label='log2(x)')
    y3 = [math.log(a,3) for a in x]
    plt.plot(x,y3,linewidth=2,color='b',label='log3(x)')
    plt.plot([1,1],[y1[0],y1[-1]],'r--',linewidth=2)
    #指定标签的位置
    plt.legend(loc='lower right')
    plt.grid(True)
    plt.show()

绘制结果如下图所示:

这里写图片描述

2.常见的函数分布

常见的函数分布主要有0-1分布二项分布泊松分布均匀分布指数分布正态分布等。其中,前三者是离散型分布,后三者是连续型分布

2.1 二项分布

若随机变量X的概率分布为:P{X=k}= (n!/k!(n-k)!) p^k (1-p)^(n-k)
其中k = 0,1,…,n(n为大于0的正整数), p的取值范围为0-1,则称X服从参数为n, p的二项分布,记做X~b(n,p)

由二项分布的推导可知,该种分布可用于描述n重伯努利试验中,事件A发生的概率。在每次试验中只有两种可能的结果,而且两种结果发生与否互相对立,并且相互独立,与其它各次试验结果无关,事件发生与否的概率在每一次独立试验中都保持不变,则这一系列试验总称为n重伯努利实验,当试验次数为1时,二项分布服从0-1分布

实现代码如下所示:

import numpy as np
import matplotlib.pyplot as plt

if __name__ =="__main__":
    u = np.random.uniform(0.0,1.0,10000)
    plt.hist(u,100,facecolor='g',alpha=0.75,label='Binomial Distribution')
    plt.legend(loc="upper left")
    plt.grid(True)
    plt.show()

绘制结果如下图所示:

这里写图片描述

2.2 泊松分布

若随机变量X的概率分布为:P{X=k}= λ^k/k! e^(-λ),
其中k = 0,1,…,n(n为大于0的正整数),λ为大于0的常数则称X是服从参数为λ的泊松分布,记作X ~ P(λ).

实现代码如下所示:

import numpy as np
import matplotlib.pyplot as plt

if __name__ =="__main__":
    #设定λ为100
    x = np.random.poisson(100,10000)
    times = 200

    plt.hist(x,bins=times,normed=True,range=[0,times],color='g',alpha=0.75,label='Poisson Distribution')
    plt.legend(loc="upper left")
    plt.grid(True)
    plt.show()

绘制结果如下图所示:

这里写图片描述

2.3 指数分布

若随机变量X的概率分布为p(x;λ)= λe^(-λx),其中xϵ[0,∞], λ为大于0的常数,则称X是服从参数为λ的指数分布,记作X ~ e(λ).

实现代码如下所示:

import numpy as np
import matplotlib.pyplot as plt

if __name__ =="__main__":
    #通过赋予不同的λ值,比较不同曲线之间的区别,
    lam1 = 0.5
    x = np.arange(0,20,0.01)
    y1 = lam1 * np.exp(-lam1*x)
    plt.plot(x,y1,color='r',label='λ=0.5')

    lam2 = 0.3
    y2 = lam2 * np.exp(-lam2*x)
    plt.plot(x,y2,color='g',label='λ=0.3')

    lam3 = 0.1
    y3 = lam3 * np.exp(-lam3*x)
    plt.plot(x,y3,color='b',label='λ=0.1')

    plt.title('Expoential Distribution')
    plt.legend(loc='upper right')
    plt.grid(True)
    plt.show()

绘制结果如下图所示:

这里写图片描述

2.4正态分布

正态分布(Normal distribution)又称高斯分布(Gaussian distribution)或常态分布。一般假设若随机变量X服从一个数学期望为μ、方差为σ^2的正态分布,记为N(μ,σ^2)。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。

实现代码如下所示:

import numpy as np
import matplotlib.pyplot as plt

if __name__ =="__main__":
    u = np.random.uniform(0.0,1.0,10000)
    times = 10000
    for time in range(times):
        u += np.random.uniform(0.0,1.0,10000)
    u /= times
    plt.hist(u,100,facecolor='b',alpha=0.75,label='Gaussian Distribution')
    plt.legend(loc="upper left")
    plt.grid(True)
    plt.show()

绘制结果如下图所示:

这里写图片描述

猜你喜欢

转载自blog.csdn.net/FlySky1991/article/details/78636911
今日推荐