python分布
A. 如何用python使變數服從正太分布
正太分布哈哈
首先,如果想要你的一千萬個數據嚴格服從正態分布,那麼先確定這個分布的數據,也就是均值和方差,N(u,o),這里均值 u=50,方差 o 由你確定,根據正態分布概率密度函數,對於每一個 1~100 之間的整數 x,都可以確定它出現的概率 f(x):
正態分布概率密度函數
而共有 10 000 000 個數字,那麼 10000000*f(x) 就是 x 出現的頻率。
因此,使用一個 101 元素的數組 freq[] 存放這些數出現的頻率,用 f(x)*10000000 逐個計算數組元素,也就是 x 應該出現的次數,假如說 2 一共會出現 3 次,那麼 freq[2]=3,計算出之後放在那裡,作為一個參照。再初始化一個全為 0 的 100 個元素的數組 sam[],記錄每個數字已經出現的次數。之後開始從 1~100 隨機,每隨機一個數字 x 都給 sam[x] 加1,再和 freq[x] 比較,如果超出了 freq[x] 就說明這個數字已經不能再出現了,將其舍棄。記錄隨機成功的次數,達到了 10000000 次即可。
B. 如何在Python中計算累積正態分布
Python正態分布概率計算方法,喜歡演算法的夥伴們可以參考學習下。需要用到math模塊。先了解一下這個模塊方法,再來寫代碼會更好上手。
def st_norm(u):
'''標准正態分布'''
import math
x=abs(u)/math.sqrt(2)
T=(0.0705230784,0.0422820123,0.0092705272,
0.0001520143,0.0002765672,0.0000430638)
E=1-pow((1+sum([a*pow(x,(i+1))
for i,a in enumerate(T)])),-16)
p=0.5-0.5*E if u<0 else 0.5+0.5*E
return(p)
def norm(a,sigma,x):
'''一般正態分布'''
u=(x-a)/sigma
return(st_norm(u))
while 1:
'''輸入一個數時默認為標准正態分布
輸入三個數(空格隔開)時分別為期望、方差、x
輸入 stop 停止'''
S=input('please input the parameters:\n')
if S=='stop':break
try:
L=[float(s) for s in S.split()]
except:
print('Input error!')
continue
if len(L)==1:
print('f(x)=%.5f'%st_norm(L[0]))
elif len(L)==3:
print('f(x)=%.5f'%norm(L[0],L[1],L[2]))
else:
print('Input error!')
C. python shap pypi變數分布
有幾種不同的分布方式。
01兩點分布0-1分布(兩點分布),它的隨機變數的取值為1或0即離散型隨機變數X的概率分布為:P{X=0}=1-p,P{X=1}=p,二項分布Binomialdistribution,泊松分布Poissondistribution正態分布,均勻分布Uniformdistribution,。
離散型隨機變數如果隨機變數X的所有取值都可以逐個列舉出來,則稱X為離散型隨機變數相應的概率分布有二項分布,泊松分布連續型隨機變數如果隨機變數X的所有取值無法逐個列舉出來,而是取數軸上某一區間內的任一點,則稱X為連續型隨機變數相應的概率分布有正態分布,均勻分布,指數分布,伽馬分布,偏態分布,卡方分布,beta分布等(真多分布,好恐怖~~)期望值在離散型隨機變數X的一切可能值中,各可能值與其對應概率的乘積之和稱為該隨機變數X的期望值,記作E(X)比如有隨機變數,取值依次為:2,2,2,4,5求其平均值:(2+2+2+4+5)/5=3。
D. 如何用python求出某已知正態分布的概率密度
Python正態分布概率計算方法,喜歡演算法的夥伴們可以參考學習下。需要用到math模塊。先了解一下這個模塊方法,再來寫代碼會更好上手。
def st_norm(u):
'''標准正態分布'''
import math
x=abs(u)/math.sqrt(2)
T=(0.0705230784,0.0422820123,0.0092705272,
0.0001520143,0.0002765672,0.0000430638)
E=1-pow((1+sum([a*pow(x,(i+1))
for i,a in enumerate(T)])),-16)
p=0.5-0.5*E if u<0 else 0.5+0.5*E
return(p)
def norm(a,sigma,x):
'''一般正態分布'''
u=(x-a)/sigma
return(st_norm(u))
while 1:
'''輸入一個數時默認為標准正態分布
輸入三個數(空格隔開)時分別為期望、方差、x
輸入 stop 停止'''
S=input('please input the parameters:\n')
if S=='stop':break
try:
L=[float(s) for s in S.split()]
except:
print('Input error!')
continue
if len(L)==1:
print('f(x)=%.5f'%st_norm(L[0]))
elif len(L)==3:
print('f(x)=%.5f'%norm(L[0],L[1],L[2]))
else:
print('Input error!')
E. 如何在Python中實現這五類強大的概率分布
R編程語言已經成為統計分析中的事實標准。但在這篇文章中,我將告訴你在Python中實現統計學概念會是如此容易。我要使用Python實現一些離散和連續的概率分布。雖然我不會討論這些分布的數學細節,但我會以鏈接的方式給你一些學習這些統計學概念的好資料。在討論這些概率分布之前,我想簡單說說什麼是隨機變數(random variable)。隨機變數是對一次試驗結果的量化。
舉個例子,一個表示拋硬幣結果的隨機變數可以表示成
Python
1
2
X = {1 如果正面朝上,
2 如果反面朝上}
隨機變數是一個變數,它取值於一組可能的值(離散或連續的),並服從某種隨機性。隨機變數的每個可能取值的都與一個概率相關聯。隨機變數的所有可能取值和與之相關聯的概率就被稱為概率分布(probability distributrion)。
我鼓勵大家仔細研究一下scipy.stats模塊。
概率分布有兩種類型:離散(discrete)概率分布和連續(continuous)概率分布。
離散概率分布也稱為概率質量函數(probability mass function)。離散概率分布的例子有伯努利分布(Bernoulli distribution)、二項分布(binomial distribution)、泊松分布(Poisson distribution)和幾何分布(geometric distribution)等。
連續概率分布也稱為概率密度函數(probability density function),它們是具有連續取值(例如一條實線上的值)的函數。正態分布(normal distribution)、指數分布(exponential distribution)和β分布(beta distribution)等都屬於連續概率分布。
若想了解更多關於離散和連續隨機變數的知識,你可以觀看可汗學院關於概率分布的視頻。
二項分布(Binomial Distribution)
服從二項分布的隨機變數X表示在n個獨立的是/非試驗中成功的次數,其中每次試驗的成功概率為p。
E(X) =np, Var(X) =np(1−p)
如果你想知道每個函數的原理,你可以在IPython筆記本中使用help file命令。E(X)表示分布的期望或平均值。
鍵入stats.binom?了解二項分布函數binom的更多信息。
二項分布的例子:拋擲10次硬幣,恰好兩次正面朝上的概率是多少?
假設在該試驗中正面朝上的概率為0.3,這意味著平均來說,我們可以期待有3次是硬幣正面朝上的。我定義擲硬幣的所有可能結果為k = np.arange(0,11):你可能觀測到0次正面朝上、1次正面朝上,一直到10次正面朝上。我使用stats.binom.pmf計算每次觀測的概率質量函數。它返回一個含有11個元素的列表(list),這些元素表示與每個觀測相關聯的概率值。
結語(Conclusion)
概率分布就像蓋房子的藍圖,而隨機變數是對試驗事件的總結。我建議你去看看哈佛大學數據科學課程的講座,Joe Blitzstein教授給了一份摘要,包含了你所需要了解的關於統計模型和分布的全部。
F. 用python怎麼做出概率分布圖啊,新手菜鳥,求高手指點
如果沒有編程經驗,建議不要看太深入的書籍,先從簡單的print 學起,然後寫一個簡單的函數,函數可以只輸出些簡單字元串,然後了解一下函數,比如函數的參數形式,以及函數與method的區別。
然後使用一些簡單的類型,比如tuple,dict 等,一個一個了解,了解一個,慢慢的練習。如果有哪些不懂,可以網路一下,多網路(谷歌)。
看哪些書都無所謂,剛開始沒有什麼好壞之分,只要你看得進,看得懂,就看那一本,別糾結於看哪本書。
G. python怎樣生成正太分布的隨機數
作者:採石工
鏈接:https://www.hu.com/question/39823283/answer/115241445
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。
一般的正態分布可以通過標准正態分布配合數學期望向量和協方差矩陣得到。如下代碼,可以得到滿足一維和二維正態分布的樣本。希望有用,如有錯誤,歡迎指正!
# coding=utf-8
import numpy as np
from numpy.linalg import cholesky
import matplotlib.pyplot as plt
sampleNo = 1000;
# 一維正態分布
# 下面三種方式是等效的
mu = 3
sigma = 0.1
np.random.seed(0)
s = np.random.normal(mu, sigma, sampleNo )
plt.subplot(141)
plt.hist(s, 30, normed=True)
np.random.seed(0)
s = sigma * np.random.randn(sampleNo ) + mu
plt.subplot(142)
plt.hist(s, 30, normed=True)
np.random.seed(0)
s = sigma * np.random.standard_normal(sampleNo ) + mu
plt.subplot(143)
plt.hist(s, 30, normed=True)
# 二維正態分布
mu = np.array([[1, 5]])
Sigma = np.array([[1, 0.5], [1.5, 3]])
R = cholesky(Sigma)
s = np.dot(np.random.randn(sampleNo, 2), R) + mu
plt.subplot(144)
# 注意繪制的是散點圖,而不是直方圖
plt.plot(s[:,0],s[:,1],'+')
plt.show()
H. python怎樣生成正太分布的隨機數
一般的正態分布可以通過標准正態分布配合數學期望向量和協方差矩陣得到。
格式為:numpy.random.randn(d0,d1,...,dn)
Python使用Mersenne Twister為核心的生成器,它會生成53 bit精度的浮點值,周期為2的19937次方減1,底層的C語言實現是快速和線程安全的.
I. Python怎麼檢驗數據分布
1. 每個維度都畫出來,看直方圖,肉眼判別。python中可以用matplotlib畫圖。
2. 連續的分布: Kolmogorov Smirnov (k-s) test 或者Cramér–von Mises (CvM) test
3. 離散的分布: Chi-Square test
4. 正態性可以用Lillifors test
5. 通常而言,你會發現這些數據不是從常見分布來的;什麼分布並不重要,常見分布只是簡化計算用的。
2, 3和4的python實現詳見scipy.stats或者statsmodels.stats這兩個庫的文檔