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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Scipy科学库

發(fā)布時間:2024/8/1 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scipy科学库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、?Scipy模塊

? ? ? ?Scipy是python的一個著名的開源科學(xué)庫,SciPy一般都是操縱NumPy數(shù)組來進(jìn)行科學(xué)計(jì)算,統(tǒng)計(jì)分析,可以說是基于NumPy之上。SciPy提供了許多科學(xué)計(jì)算的庫函數(shù),包含的功能,最優(yōu)化、線性代數(shù)、積分、插值、擬合、特殊函數(shù)、快速傅里葉變換、信號處理、圖像處理、常微分方程求解器,系數(shù)矩陣計(jì)算等,

  • 應(yīng)用場景:Scipy是高端科學(xué)計(jì)算工具包,用于數(shù)學(xué)、科學(xué)、工程學(xué)等領(lǐng)域
  • 安裝?pip install scipy
  • """ 包含子模塊 cipy.cluster向量計(jì)算Kmeansscipy.constants物理和數(shù)學(xué)常量scipy.fftpack傅立葉變換scipy.integrate積分程序scipy.interpolate插值scipy.io數(shù)據(jù)輸入輸出scipy.linalg線性代數(shù)程序scipy.ndimagen維圖像包scipy.odr正交距離回歸scipy.optimize優(yōu)化scipy.signal信號處理scipy.sparse稀疏矩陣scipy.spatial空間數(shù)據(jù)結(jié)構(gòu)和算法scipy.special一些特殊的數(shù)學(xué)函數(shù)scipy.stats統(tǒng)計(jì) """

    二 、概率密度

    from scipy import stats import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei']#用來正常顯示中文標(biāo)簽 plt.rcParams['axes.unicode_minus']=False#用來正常顯示負(fù)號 #正態(tài)分布概率密度 X = [] Y = [] for a in np.linspace(-5, 5, 100):y = stats.norm.pdf(a)X.append(a)Y.append(y) plt.plot(X, Y) plt.xlabel("x") plt.ylabel("p") plt.title("正態(tài)分布概率密度") plt.show()

    ?三、正態(tài)分布查表

    正態(tài)分布查表其實(shí)就是查累積概率分布。

    設(shè)某校學(xué)生身高服從均值為160, 方差為3600的正態(tài)分布,那該校學(xué)生身高在180以下的學(xué)生比例是多少?

    轉(zhuǎn)換為標(biāo)準(zhǔn)正態(tài)分布,服從標(biāo)準(zhǔn)正態(tài)分布,,于是我們查標(biāo)準(zhǔn)正態(tài)分布表0.5的值,用

    scipy.stats.norm.cdf(0.5)

    from scipy import statsp = stats.norm.cdf(0.5) print(p)

    ?四、常用統(tǒng)計(jì)方法?

    from scipy.stats import chi2 # 卡方分布 from scipy.stats import norm # 正態(tài)分布 from scipy.stats import t # t分布 from scipy.stats import f # F分布 import matplotlib.pyplot as plt import numpy as np import pandas as pd import scipy.stats as stats from scipy.stats import chi2_contingency # 列聯(lián)表分析# matplotlib畫圖注釋中文需要設(shè)置 from matplotlib.font_manager import FontProperties xy_font_set = FontProperties(fname=r"c:\windows\fonts\方正稚藝簡體.ttf", size=12) zhushi_font_set = FontProperties(fname=r"c:\windows\fonts\方正粗倩簡體.ttf", size=12) titleYW_font_set = FontProperties(fname=r"c:\windows\fonts\Gabriola.ttf", size=20) titleZW_font_set = FontProperties(fname=r"c:\windows\fonts\漢儀細(xì)行楷簡.ttf", size=18)# rvs: Random Variates # pdf: Probability Density Function 概率密度函數(shù) # cdf: Cumulative Distribution Function 概率密度函數(shù)的積分函數(shù) # sf: Survival Function (1-CDF) # ppf: Percent Point Function (Inverse of CDF) 百分點(diǎn)函數(shù),概率密度函數(shù)的積分值 # isf: Inverse Survival Function (Inverse of SF) # stats: Return mean, variance, (Fisher’s) skew, or (Fisher’s) kurtosis # moment: non-central moments of the distribution# ppf以概率的形式,查詢函數(shù)值-----------類似分布臨界表plt.figure() # example ------------------------------------------- 卡方分布(右側(cè)單邊) plt.subplot2grid((2, 2), (0, 0)) df = 20 # 自由度 # print(chi2.ppf(0.01, df)) # 計(jì)算函q=0.01概率時數(shù)值。其中 q = 1-a # print(chi2.cdf(8.260, df)) # 知道x值求a x = np.linspace(chi2.ppf(0.01, df), # 繪制概率密度圖chi2.ppf(0.99, df), 100) plt.plot(x, chi2.pdf(x, df), alpha=0.6, label='chi2 pdf') plt.title(u'自由度為20時的卡方概率密度函數(shù)圖', fontproperties=titleZW_font_set, size=10) # 計(jì)算平均數(shù)、方差、標(biāo)準(zhǔn)差 # print(chi2.mean(df)) # print(chi2.var(df)) # print(chi2.std(df))# example ---------------------------------------------------- 標(biāo)準(zhǔn)正態(tài)分布(左側(cè)單邊) plt.subplot2grid((2, 2), (0, 1)) # print(norm.ppf(0.6179)) # 知道q時求x, q=a # print(norm.cdf(0.3)) # 知道x時求q x = np.linspace(norm.ppf(0.01), norm.ppf(0.99), 100) plt.plot(x, norm.pdf(x), alpha=0.6, label='norm pdf') plt.title(u'標(biāo)準(zhǔn)正態(tài)分布概率密度函數(shù)圖', fontproperties=titleZW_font_set, size=10)# example ----------------------------------------------------- t分布(雙邊分布) plt.subplot2grid((2, 2), (1, 0)) df = 15 x = np.linspace(t.ppf(0.01, df), t.ppf(0.99, df), 100) # print(t.ppf(0.95, df)) # q=0.95,a=(1-q)*2 # print(t.cdf(1.753, df)) plt.plot(x, t.pdf(x, df), alpha=0.6, label='t pdf') plt.title(u'自由度為15時的t分布概率密度函數(shù)圖', fontproperties=titleZW_font_set, size=10)# example ------------------------------------------------------ F分布(右側(cè)單邊分布) plt.subplot2grid((2, 2), (1, 1)) df = 5 dn = 8 x = np.linspace(f.ppf(0.01, df, dn), f.ppf(0.99, df, dn), 100) # print(f.ppf(0.95, df, dn)) plt.plot(x, f.pdf(x, df, dn), alpha=0.6, label='f pdf') plt.title(u'自由度為5和8時的f分布概率密度函數(shù)圖', fontproperties=titleZW_font_set, size=10)# example ------------------------------------------------------- 非標(biāo)準(zhǔn)正態(tài)分布 plt.figure() std = 1 mean = 2 normalDistribution = stats.norm(mean, std) # 構(gòu)建統(tǒng)計(jì)分布 x = np.linspace(normalDistribution.ppf(0.01), normalDistribution.ppf(0.99), 100) plt.plot(x, normalDistribution.pdf(x)) # plt.show()# example -------------------------------------------------------- 對連續(xù)數(shù)據(jù)進(jìn)行正態(tài)擬合 plt.figure() train = pd.read_csv("csv/Titanic/train.csv") train_Age = train.dropna(subset=['Age']) M_S = stats.norm.fit(train_Age['Age']) # 正態(tài)擬合的平均值與標(biāo)準(zhǔn)差 train_Age['Age'].plot(kind='kde') # 原本的概率密度分布圖normalDistribution = stats.norm(M_S[0], M_S[1]) # 繪制擬合的正態(tài)分布圖 x = np.linspace(normalDistribution.ppf(0.01), normalDistribution.ppf(0.99), 100) plt.plot(x, normalDistribution.pdf(x), c='orange') plt.xlabel('Age about Titanic') plt.title('Titanic[Age] on NormalDistribution', size=20) plt.legend(['Origin', 'NormDistribution'])np.random.normal()的意思是一個正態(tài)分布,normal這里是正態(tài)的意思。 numpy.random.normal(loc=0,scale=1e-2,size=shape) 參數(shù)loc(float):正態(tài)分布的均值,對應(yīng)著這個分布的中心。 參數(shù)scale(float):正態(tài)分布的標(biāo)準(zhǔn)差 參數(shù)size(int 或者整數(shù)元組):輸出矩陣的shape,默認(rèn)為None。# ----------------------------------------------------------------- R x C列聯(lián)表,獨(dú)立性檢驗(yàn) # 建立關(guān)于性別與存活 train_pclass_0 = train['Pclass'][train['Survived'] == 0].value_counts() train_pclass_1 = train['Pclass'][train['Survived'] == 1].value_counts() train_pclass_01 = pd.concat([train_pclass_0, train_pclass_1], axis=1, sort=True) train_pclass_01.columns = ['Not_Survived', 'Survived'] g, p, dof, expctd = chi2_contingency(train_pclass_01.values) # g為chi2值,服從自由度為dof的卡方分布print(g) # 擬合優(yōu)度檢驗(yàn),判斷兩個分類型變量是否獨(dú)立 # 首先繪制卡方自由度為dof的曲線 plt.figure() x = np.linspace(chi2.ppf(0.01, dof), chi2.ppf(0.99, dof), 100) plt.plot(x, chi2.pdf(x, dof))# 以95%置信區(qū)間,查看小概率事件區(qū)間 plt.axvline(chi2.ppf(0.975, dof), color='r') plt.axvline(chi2.ppf(0.025, dof), color='r') plt.title('chi2 distribution'+'whose dof is '+str(dof)) plt.text(chi2.ppf(0.975, dof), 0.02, 'q=0.95,z='+str(round(chi2.ppf(0.975, dof), 2)), ha='right', va='top', color='g', alpha=0.8, size=15) plt.text(chi2.ppf(0.025, dof), 0.02, 'q=0.05,z='+str(round(chi2.ppf(0.025, dof), 2)), ha='left', va='top', color='g', alpha=0.8, size=15)plt.show()


    參考

    Python機(jī)器學(xué)習(xí)及分析工具:Scipy篇

    Scipy學(xué)習(xí)總結(jié)

    Scipy簡介_Are you ready的博客-CSDN博客_scipy

    總結(jié)

    以上是生活随笔為你收集整理的Scipy科学库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。