日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深入浅出统计学 第四五章 离散概率的计算与分布

發布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入浅出统计学 第四五章 离散概率的计算与分布 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

離散概率計算與分布的應用

在原書的這兩章離散概率計算與分布的應用,重點在于概念的理解和公式的記憶.
而對于整本書而言,四五六章其實都作為第七章:三種離散概率分布,第八,九章,正態分布(連續概率分布之一)做鋪墊.
主要包括以下內容:
1. 期望與方差的計算
2. 線性變換與獨立觀察值變換有關內容
3. 貝葉斯定理

其中特別要注意的1,2點,在之后的內容中都將頻繁使用這些內容.
而貝葉斯定理雖然很重要,但是對于之后的內容影響不大,如果有需要的話.可以進行擴展閱讀貝葉斯算法,貝葉斯優化等.
其中貝葉斯算法算是機器學習比較基本的內容,去年寫過一個實現純Python原生語言的的樸素貝葉斯法分類器的Python3 實現,如果有興趣可以嘗試用numpy和pandas改寫一下.

本文的編碼內容較少,包括生成隨機離散概率分布與相應計算,以及一個簡易的封裝類兩個部分.

用Python代碼計算計算器

生成隨機變量

# 首先使用numpy生成隨機變量 import numpy as np np.random.seed(1024) data = np.random.randint(1,5,size = 301)

計算概率分布

假設我們的數據為所有可能結果的數據集,這里我們通過上面生成的數據,計算概率分布.
或者我們也可以直接生成一個格式一致的pandas.core.series.Series類型數據,然后再利用之后的代碼進行計算

import pandas as pd value_count = pd.Series(data).value_counts() value_count = value_count/len(pd.Series(data)) value_count # 注意此時的value為(pandas.core.series.Series) 2 0.292359 1 0.242525 3 0.235880 4 0.229236 dtype: float64

計算期望與方差

exp= sum(value_count.index * value_count) var = sum(((value_count.index - exp) ** 2) * value_count) print("exp: {0:.3f}, var: {1:.3f}".format(exp, var))# 線性變換: aX+b a = 2 b=0.5 exp , var = a * exp + b, a * a * var print("exp: {0:.3f}, var: {1:.3f}".format(exp, var)) # 獨立觀察值 nX n = 10 print("exp: {0:.3f}, var: {1:.3f}".format(n * exp, n * var)) exp: 2.452, var: 1.191 exp: 5.404, var: 4.765 exp: 54.037, var: 47.648

對代碼進行封裝

封裝后的代碼可以計算數據集期望方差,計算一個確定的離散概率分布的方差,或者計算其相關的線性變換.
而對于獨立觀察值沒有封裝,直接將與默認版本結果 * n 即可

class Discrete_probability_distribution:def fit(self, list, index=None):""":param list: type:list; The set of all the results;:return: pandas.core.series.Series, Discrete probability distribution"""import pandas as pdself.data = pd.Series(list).value_counts() / len(pd.Series(list))if index != None:self.data.index = indexreturn self.datadef transfrom(self, a=1.0, b=0.0):"""Support the calculation of expectation and variance of itself and linear change:param a: int,Linear variation parameter:a;:param b: int,Linear variation parameter:b;:return:float,float;Expectation , variance ;"""self.exp = sum(self.data.index * self.data)self.var = sum(((self.data.index - self.exp) ** 2) * self.data)return a * self.exp + b, a * a * self.vardef fit_transfrom(self, list, a=1.0, b=0.0):"""fit and transfrom data,running function fit and function transfrom in one function:param list: type:list; The set of all the results;:param a: int,Linear variation parameter:a;:param b: int,Linear variation parameter:b;:return:pandas.core.series.Series,float,float; Discrete probability distribution,Expectation , variance ;"""self.fit(list)exp, var = self.transfrom(a=a, b=b)return self.data, exp, var

使用封裝代碼

我們首先計算一下之前的數據集,然后在利用封裝的函數計算《深入淺出統計學》第227頁的例題

discrete = Discrete_probability_distribution() data_transfrom, exp, var = discrete.fit_transfrom(data) print("data: \n", data_transfrom) print("exp: {0:.3f}, var: {1:.3f}".format(exp, var)) data: 2 0.292359 1 0.242525 3 0.235880 4 0.229236 dtype: float64 exp: 2.452, var: 1.191 # 計算 P225 頁例題 import pandas as pd Ser = pd.Series([0.8, 0.1, 0.07, 0.03]) Ser.index = [-0.5, 1.5, 4.5, 9.5] discrete.data = Ser exp2, var2 = discrete.transfrom() print("exp: {0:.3f}, var: {1:.3f}".format(exp2, var2)) exp3, var3 = discrete.transfrom(b = -0.5) print("exp: {0:.3f}, var: {1:.3f}".format(exp3, var3)) exp: 0.350, var: 4.428 exp: -0.150, var: 4.428

總結

以上是生活随笔為你收集整理的深入浅出统计学 第四五章 离散概率的计算与分布的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。