目录
一:介绍
1 什么是正态分布?
高斯分布(正态分布)是一个常见的连续概率分布。正态分布的数学期望值或期望值 μ等于位置参数,决定了分布的位置;其方差σ2的开平方或标准差σ等于尺度参数,决定了分布的幅度。
正态分布的概率密度函数曲线呈钟形,因此人们又经常称之为钟形曲线(类似于寺庙里的大钟,因此得名)。
重点知识了解
期望:
期望,意思就是这个事情的总的平均结果会是怎样
通俗的讲,就是平均值,也可以说是平均水平
期望的算法是:
概率*取值的总和,反映的是事情达成的总的预期水平值
这就是期待值
方差和标准差
方差是标准差的平方
方差和标准差.方差和标准差是测算离散趋势最重要、最常用的指标.方差是各变量值与其均值离差平方的平均数,它是测算数值型数据离散程度的最重要的方法.标准差为方差的平方根,用S表示.标准差相应的计算公式为
标准差是方差开方后的结果(即方差的算术平方根) 假设这组数据的平均值是m 方差公式s^2=1/n[(x1-m)^2+(x2-m)^2+...+(xn-m)^2]
假设方差是a.则标准差就是这个方差开方
标准差与方差不同的是,标准差和变量的计算单位相同,比方差清楚,因此很多时候我们分析的时候更多的使用的是标准差.
2 什么是均匀分布 ?
均匀分布也叫矩形分布,它是对称概率分布,在相同长度间隔的分布概率是等可能的。 均匀分布由两个参数a和b定义,它们是数轴上的最小值和最大值,通常缩写为U(a,b)。
3:二元高斯分布(二元正态分布)
拥有两个变元的正态分布模型
二:编程实现
1: 正态分布
必要了解:np.random.randn() 函数用于生成标准正态分布的伪随机数。
Y = randn(n):返回一个n*n的随机项的矩阵。如果n不是个数量,将返回错误信息。
Y = randn(m,n) 或 Y = randn([m n]):返回一个m*n的随机项矩阵。
Y = randn(m,n,p,...) 或 Y = randn([m n p...]):产生随机数组。
Y = randn(size(A)):返回一个和A有同样维数大小的随机数组。
实例:
#直方图初判
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
% matplotlib inlines = pd.DataFrame(np.random.randn(1000)+10,columns = ['value'])
print(s.head())
# 创建随机数据fig = plt.figure(figsize = (10,6))
ax1 = fig.add_subplot(2,1,1) # 创建子图1
ax1.scatter(s.index, s.values)
plt.grid()
# 绘制数据分布图ax2 = fig.add_subplot(2,1,2) # 创建子图2
s.hist(bins=30,alpha = 0.5,ax = ax2)
s.plot(kind = 'kde', secondary_y=True,ax = ax2)
plt.grid()
# 绘制直方图
# 呈现较明显的正太性
2:均匀分布
必要了解:np.random.rand() 产生均匀分布的随机数或矩阵
rand函数产生由在(0, 1)之间均匀分布的随机数组成的数组
Y = rand(n) 返回一个n x n的随机矩阵如果n不是数量,则返回错误信息
Y = rand(m,n) 或 Y = rand([m n]) 返回一个m x n的随机矩阵
Y = rand(m,n,p,...) 或Y = rand([m n p...]) 产生随机数组
Y = rand(size(A)) 返回一个和A有相同尺寸的随机矩阵
3:高斯(正态)二元分布
必要了解:np.random.multivariate_normal():np.random.multivariate_normal方法用于根据实际情况生成一个多元正态分布矩阵(正态分布基本概念戳这里)
def multivariate_normal(mean, cov, size=None, check_valid=None, tol=None)
mean:mean是多维分布的均值,维度为1;也可表示二元高斯分布的中心。
cov:协方差矩阵(协方差基本概念戳这里),注意:协方差矩阵必须是对称的且需为半正定矩阵;一般二维的为cov = [[1,0.0],[0.0,1]]
size:指定生成的正态分布矩阵的维度(例:若size=(1, 1, 2),则输出的矩阵的shape即形状为 1X1X2XN(N为mean的长度))
tol:检查协方差矩阵奇异值时的公差,float类型。
check_valid:这个参数用于决定当cov即协方差矩阵不是半正定矩阵时程序的处理方式,它一共有三个值:warn,raise以及ignore。当使用warn作为传入的参数时,如果cov不是半正定的程序会输出警告但仍旧会得到结果;当使用raise作为传入的参数时,如果cov不是半正定的程序会报错且不会计算出结果;当使用ignore时忽略这个问题即无论cov是否为半正定的都会计算出结果。
个数呢??dot_num:
numpy.eye() 生成对角矩阵。
问题:一个二元高斯分布图,拥有5000个实例,实例的生成服从二元高斯分布,中心为(10,10),标准差为(1,1)
mean = [10,10] #二元高斯分布的中心(10,10)
cov = [[1,0.0],[0.0,1]] # diagonal covariance, cov是一个协方差矩阵 cov = np.eye(2)
data = np.random.multivariate_normal(mean,cov,5000) #生成一个多元正态分布矩阵plt.plot(gdata[:,0],gdata[:,1],'+',c='blue')
print(np.corrcoef(gdata[:,0],gdata[:,1]))