基本概率分布图的绘制

原文地址:https://github.com/AsuraDong/Blog/blob/master/Articles/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/%E5%9F%BA%E6%9C%AC%E6%A6%82%E7%8E%87%E5%88%86%E5%B8%83%E5%9B%BE%E7%9A%84%E7%BB%98%E5%88%B6.md

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import math
import time
from scipy import stats
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm

mpl.rcParams[‘font.sans-serif‘] = [‘FangSong‘]
mpl.rcParams[‘axes.unicode_minus‘]=False

一、绘图介绍

Bar柱状图(和之后的直方图不同)

x = np.arange(0,10,0.1)
y = np.sin(x)
plt.bar(x,y,width=0.04,linewidth=0.2)
plt.plot(x,y,‘r--‘,linewidth=2)
plt.title(‘Sin曲线‘)
plt.xlabel(‘X‘)
plt.ylabel(‘Y‘)
plt.show()

屁股线

f(x) = x**x when x>0 and (-x)**(-x) when x<0
def f(x):
    y = np.ones(x.shape)
    i = x>0
    y[i] = np.power(x[i],x[i])
    i = x<0
    y[i] = np.power(-x[i],-x[i])
    return y

x = np.linspace(-1.3,1.3,101)
y = f(x)
plt.plot(x,y,‘g-‘,label=‘x^x‘,linewidth = 2)
plt.grid()
plt.legend(loc=‘upper left‘)
plt.show()

心形线

t = np.linspace(0,2*np.pi,100)
x = 16*np.sin(t)**3
y = 13*np.cos(t)-5*np.cos(2*t)-2*np.cos(3*t)-np.cos(4*t)
plt.plot(x,y,‘r-‘,linewidth = 2)
plt.grid(True)
plt.show()

胸型线

x = np.arange(1,0,-0.001)
y = (-3 * x * np.log(x) + np.exp(-(40 * (x - 1 / np.e)) ** 4) / 25) / 2 #注意这里在1/e取极值,给它一个智力的波动
plt.figure(figsize=(5,7))
plt.plot(y,x,‘r-‘,linewidth = 2) #注意这里是y,x
plt.grid(True)
plt.title(‘胸型线‘,fontsize = 20)
plt.show()

渐开线

t = np.linspace(0, 50, num=1000)
x = t*np.sin(t) + np.cos(t)
y = np.sin(t) - t*np.cos(t)
plt.plot(x, y, ‘r-‘, linewidth=2)
plt.grid()
plt.show()

正态分布概率密度函数

######## 高斯分布/正态分布###############

mu = 0
sigma = 1
x  = np.linspace(mu-3*sigma,mu+3*sigma,51)
y =  np.exp(-(x-mu)**2/(2*sigma**2))/(np.sqrt(2*np.pi)*sigma)

plt.figure()
#plt.plot(x,y,‘ro-‘,linewidth=2)
plt.plot(x,y,‘ro-‘,x,y,‘g*‘,linewidth=2,markersize = 3)

plt.xlabel(‘X‘,fontsize = 15)
plt.ylabel(‘Y‘,fontsize=15)
plt.title(r‘Normal distribution‘,fontsize =18)
#plt.grid(True)
plt.savefig(‘NormalDistribution.png‘)
plt.show()

损失函数:Logistic损失(-1,1)/SVM Hinge损失/ 0/1损失

plt.figure(figsize=(10,8))
x = np.linspace(start=-2, stop=3, num=1001, dtype=np.float)
y_logit = np.log(1 + np.exp(-x)) / math.log(2) #Logistic损失(取对数)
y_boost = np.exp(-x)
y_01 = x < 0
y_hinge = 1.0 - x
y_hinge[y_hinge < 0] = 0
plt.plot(x, y_logit, ‘r-‘, label=‘Logistic Loss‘, linewidth=2)
plt.plot(x, y_01, ‘g-‘, label=‘0/1 Loss‘, linewidth=2)
plt.plot(x, y_hinge, ‘b-‘, label=‘Hinge Loss‘, linewidth=2)
plt.plot(x, y_boost, ‘m--‘, label=‘Adaboost Loss‘, linewidth=2)
plt.grid()
plt.legend(loc=‘upper right‘)
plt.savefig(‘1.png‘)
plt.show()

二、概率分布

均匀分布(散点图)

x = np.random.rand(10000) #每个的概率
t = np.arange(len(x))
plt.plot(t,x,‘g.‘,label="Uniform Distribution")
plt.legend(loc="upper left")
plt.grid()
plt.show()

概率分布(直方图)

x = np.random.rand(10000)
#x = [1,2,1]
plt.hist(x,25,color="m",alpha=0.37,label="Uniform Distribution")#直方图
plt.legend(loc="upper left")
plt.grid()
plt.show()

中心极限定理

TIMES = 1000
SIZE = 10000
resultArr = np.zeros(SIZE)
for i in range(TIMES):
    resultArr += np.random.uniform(-5,5,SIZE)
resultArr = resultArr / TIMES
plt.hist(resultArr,bins=30,color=‘g‘,alpha = 0.3,label="Uniform Distribution")
plt.legend(loc="upper right")
plt.grid()
plt.show()

其他的中心极限定理

lamda = 7
p = stats.poisson(lamda)
y = p.rvs(size=1000)
mx = 30
r = (0, mx)
bins = r[1] - r[0]
plt.figure(figsize=(15, 8), facecolor=‘w‘)
plt.subplot(121)
plt.hist(y, bins=bins, range=r, color=‘g‘, alpha=0.8, normed=True)
t = np.arange(0, mx+1)
plt.plot(t, p.pmf(t), ‘ro-‘, lw=2)
plt.grid(True)

N = 1000
M = 10000
plt.subplot(122)
a = np.zeros(M, dtype=np.float)
p = stats.poisson(lamda)
for i in np.arange(N):
    a += p.rvs(size=M)
a /= N
plt.hist(a, bins=20, color=‘g‘, alpha=0.8, normed=True)
plt.grid(b=True)
plt.show()

Possion分布

x = np.random.poisson(lam=5, size=10000)
print (x)
pillar = 15
a = plt.hist(x, bins=pillar, normed=True, range=[0, pillar], color=‘g‘, alpha=0.5)
plt.grid()
plt.show()
print (a[1])
print(‘-‘*10)
print (a[0].sum())
[5 4 4 ..., 4 2 3]

[  0.   1.   2.   3.   4.   5.   6.   7.   8.   9.  10.  11.  12.  13.  14.
  15.]
----------
1.0
size = 1000
lamda = 5
p = np.random.poisson(lam=lamda, size=size)
plt.figure()
plt.hist(p, bins=range(3 * lamda), histtype=‘bar‘, align=‘left‘, color=‘r‘, rwidth=0.8, normed=True)
plt.grid(b=True, ls=‘:‘)
# plt.xticks(range(0, 15, 2))
plt.title(‘Numpy.random.poisson‘, fontsize=13)

plt.figure()
r = stats.poisson(mu=lamda)
p = r.rvs(size=size)
plt.hist(p, bins=range(3 * lamda), color=‘r‘, align=‘left‘, rwidth=0.8, normed=True)
plt.grid(b=True, ls=‘:‘)
plt.title(‘scipy.stats.poisson‘, fontsize=13)
plt.show()

插值

rv = np.random.poisson(5)
x1 = a[1]
y1 = rv.pmf(x1)
itp = BarycentricInterpolator(x1, y1)  # 重心插值
x2 = np.linspace(x.min(), x.max(), 50)
y2 = itp(x2)
cs = sp.interpolate.CubicSpline(x1, y1)       # 三次样条插值
plt.plot(x2, cs(x2), ‘m--‘, linewidth=5, label=‘CubicSpine‘)           # 三次样条插值
plt.plot(x2, y2, ‘g-‘, linewidth=3, label=‘BarycentricInterpolator‘)   # 重心插值
plt.plot(x1, y1, ‘r-‘, linewidth=1, label=‘Actural Value‘)             # 原始值
plt.legend(loc=‘upper right‘)
plt.grid()
plt.show()
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-44-28524b0e3309> in <module>()
      1 rv = np.random.poisson(5)
      2 x1 = a[1]
----> 3 y1 = rv.pmf(x1)
      4 itp = BarycentricInterpolator(x1, y1)  # 重心插值
      5 x2 = np.linspace(x.min(), x.max(), 50)

AttributeError: ‘int‘ object has no attribute ‘pmf‘

三、 绘制3D图像

x, y = np.mgrid[-3:3:7j, -3:3:7j]
print (x)
print (y)
u = np.linspace(-3, 3, 101)
x, y = np.meshgrid(u, u) #注意meshgrid的用法
print (x)
print (y)
z = x*y*np.exp(-(x**2 + y**2)/2) / math.sqrt(2*math.pi)
# z = x*y*np.exp(-(x**2 + y**2)/2) / math.sqrt(2*math.pi)
fig = plt.figure()
ax = fig.add_subplot(111,projection=‘3d‘)
# ax.plot_surface(x, y, z, rstride=5, cstride=5, cmap=cm.coolwarm, linewidth=0.1)  #
ax.plot_surface(x, y, z, rstride=3, cstride=3, cmap=cm.gist_heat, linewidth=0.5)
plt.show()
[[-3. -3. -3. -3. -3. -3. -3.]
 [-2. -2. -2. -2. -2. -2. -2.]
 [-1. -1. -1. -1. -1. -1. -1.]
 [ 0.  0.  0.  0.  0.  0.  0.]
 [ 1.  1.  1.  1.  1.  1.  1.]
 [ 2.  2.  2.  2.  2.  2.  2.]
 [ 3.  3.  3.  3.  3.  3.  3.]]
[[-3. -2. -1.  0.  1.  2.  3.]
 [-3. -2. -1.  0.  1.  2.  3.]
 [-3. -2. -1.  0.  1.  2.  3.]
 [-3. -2. -1.  0.  1.  2.  3.]
 [-3. -2. -1.  0.  1.  2.  3.]
 [-3. -2. -1.  0.  1.  2.  3.]
 [-3. -2. -1.  0.  1.  2.  3.]]
[[-3.   -2.94 -2.88 ...,  2.88  2.94  3.  ]
 [-3.   -2.94 -2.88 ...,  2.88  2.94  3.  ]
 [-3.   -2.94 -2.88 ...,  2.88  2.94  3.  ]
 ...,
 [-3.   -2.94 -2.88 ...,  2.88  2.94  3.  ]
 [-3.   -2.94 -2.88 ...,  2.88  2.94  3.  ]
 [-3.   -2.94 -2.88 ...,  2.88  2.94  3.  ]]
[[-3.   -3.   -3.   ..., -3.   -3.   -3.  ]
 [-2.94 -2.94 -2.94 ..., -2.94 -2.94 -2.94]
 [-2.88 -2.88 -2.88 ..., -2.88 -2.88 -2.88]
 ...,
 [ 2.88  2.88  2.88 ...,  2.88  2.88  2.88]
 [ 2.94  2.94  2.94 ...,  2.94  2.94  2.94]
 [ 3.    3.    3.   ...,  3.    3.    3.  ]]

cmaps = [(‘Perceptually Uniform Sequential‘,
          [‘viridis‘, ‘inferno‘, ‘plasma‘, ‘magma‘]),
         (‘Sequential‘, [‘Blues‘, ‘BuGn‘, ‘BuPu‘,
                         ‘GnBu‘, ‘Greens‘, ‘Greys‘, ‘Oranges‘, ‘OrRd‘,
                         ‘PuBu‘, ‘PuBuGn‘, ‘PuRd‘, ‘Purples‘, ‘RdPu‘,
                         ‘Reds‘, ‘YlGn‘, ‘YlGnBu‘, ‘YlOrBr‘, ‘YlOrRd‘]),
         (‘Sequential (2)‘, [‘afmhot‘, ‘autumn‘, ‘bone‘, ‘cool‘,
                             ‘copper‘, ‘gist_heat‘, ‘gray‘, ‘hot‘,
                             ‘pink‘, ‘spring‘, ‘summer‘, ‘winter‘]),
         (‘Diverging‘, [‘BrBG‘, ‘bwr‘, ‘coolwarm‘, ‘PiYG‘, ‘PRGn‘, ‘PuOr‘,
                        ‘RdBu‘, ‘RdGy‘, ‘RdYlBu‘, ‘RdYlGn‘, ‘Spectral‘,
                        ‘seismic‘]),
         (‘Qualitative‘, [‘Accent‘, ‘Dark2‘, ‘Paired‘, ‘Pastel1‘,
                          ‘Pastel2‘, ‘Set1‘, ‘Set2‘, ‘Set3‘]),
         (‘Miscellaneous‘, [‘gist_earth‘, ‘terrain‘, ‘ocean‘, ‘gist_stern‘,
                            ‘brg‘, ‘CMRmap‘, ‘cubehelix‘,
                            ‘gnuplot‘, ‘gnuplot2‘, ‘gist_ncar‘,
                            ‘nipy_spectral‘, ‘jet‘, ‘rainbow‘,
                            ‘gist_rainbow‘, ‘hsv‘, ‘flag‘, ‘prism‘])]
时间: 2024-10-11 01:03:14

基本概率分布图的绘制的相关文章

Beta分布从入门到精通

最近一直有点小忙,但是不知道在瞎忙什么,终于有时间把Beta分布的整理弄完. 下面的内容,夹杂着英文和中文,呵呵- Beta Distribution Beta Distribution Definition: The Beta distribution is a special case of the Dirichlet distribution, and is related to the Gamma distribution. It has the probability distribu

蒙特卡罗算法(Monte Carlo method)

蒙特卡罗方法概述 蒙特卡罗方法又称统计模拟法.随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法.将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解.为象征性地表明这一方法的概率统计特征,故借用赌城蒙特卡罗命名. 蒙特卡罗方法的基本思想 用事件发生的"频率"来决定事件的"概率".高速电子计算机使得用数学方法在计算机上大量.快速地模拟这样的试验成为

敏感性分析与风险分析

http://www.360doc.com/content/18/0214/01/21022201_729867770.shtml 敏感性分析 研究建设项目主要因素发生变化时,项目经济效益变化程度,以判断这些因素对经济目标的影响程度 敏感性分析程序 确定分析的经济目标即指标 选择不确定因素,设定变化幅度 计算影响程度 寻找敏感因素 单因素敏感性分析 一次只考虑变动一个影响要素,保持其他要素不变 敏感性分析表 敏感性分析图 敏感度系数 经济风险分析 由随机因素引起的项目总体价值对预期价值的偏离 产

Beta分布(转)

背景 在Machine Learning中,有一个很常见的概率分布叫做Beta Distribution: 同时,你可能也见过Dirichelet Distribution: 那么Beta Distribution和Dirichlet Distribution的意义何在呢? 解释 1. 如果给你一个硬币,投这个硬币有\theta的概率抛出Head,有(1-\theta)的概率抛出Tail.如果在未来抛了五次这个硬币,有三次是Head,有两次是Tail,这个\theta最有可能是多少呢?如果你必须

如何通过网络,辨别数字世界的真假

数字世界,电流涌动.有多少能量是一直被浪费的呢?如果说,现实生活中我们奢侈的吃喝丢弃粮食是一种浪费.那么,制造虚假数据的人,同样一直在浪费能量.如何充分利用网络?遇到的困境或许不是如何充分利用,或许是如何更新陈旧的法律. 那么,如何通过网络辨别数字世界真假?这可以转换一个角度,如何搜集真假事件的相关信息.真或者假不是终点,目的才是它的终点.那么,webspider就是一个good idea.以柴静事件为例,可以搜集所有相关方公开言论以及合法相关背景,用简单的时间为轴.把事件用时间来排序,或许可以

最大似然估计总结

from http://blog.csdn.net/yanqingan/article/details/6125812 最大似然估计学习总结------MadTurtle   1. 作用 在已知试验结果(即是样本)的情况下,用来估计满足这些样本分布的参数,把可能性最大的那个参数作为真实的参数估计. 2. 离散型 设为离散型随机变量,为多维参数向量,如果随机变量相互独立且概率计算式为P{,则可得概率函数为P{}=,在固定时,上式表示的概率:当已知的时候,它又变成的函数,可以把它记为,称此函数为似然

SPSS-相关性和回归分析(一元线性方程)案例解析

任何事物和人都不是以个体存在的,它们都被复杂的关系链所围绕着,具有一定的相关性,也会具备一定的因果关系,(比如:父母和子女,不仅具备相关性,而且还具备因果关系,因为有了父亲和母亲,才有了儿子或女儿),但不是所有相关联的事物都具备因果关系. 下面用SPSS采用回归-线性分析的方式来分析一下:居民总储蓄 和 "居民总消费"情况是否具备相关性,如果具备相关性,那相关关系的密切程度为多少. 下面以"居民总储蓄"和"居民总消费"的调查样本做统计分析,数据如

机器学习实践指南:案例应用解析

试读及购买链接 <机器学习实践指南:案例应用解析>是机器学习及数据分析领域不可多得的一本著作,也是为数不多的既有大量实践应用案例又包括算法理论剖析的著作,作者针对机器学习算法既抽象复杂又涉及多门数学学科的特点,力求理论联系实际,始终以算法应用为主线,由浅入深以全新的角度诠释机器学习. 前 言第一部分 准备篇第1章 机器学习发展及应用前景 21.1 机器学习概述 21.1.1 什么是机器学习 31.1.2 机器学习的发展 31.1.3 机器学习的未来 41.2 机器学习应用前景 51.2.1 数

NCL 天气分析图

一.风向风速矢量图 先看一个风向风速的样例图片: 这里与上一篇气温分布图的绘制方法基本相同,不同的地方在于 [email protected]         = 20.                ; make vectors larger  [email protected]            = 0.030              ; ref vec length  [email protected]            = "WindBarb"         ; s