最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python之二維正態(tài)分布采樣置信橢圓繪制

 更新時(shí)間:2023年02月01日 11:49:22   作者:猶有傲霜枝  
這篇文章主要介紹了Python之二維正態(tài)分布采樣置信橢圓繪制方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

二維正態(tài)分布采樣后,繪制置信橢圓

假設(shè)二維正態(tài)分布表示為:

下圖為兩個(gè)二維高斯分布采樣后的置信橢圓

每個(gè)二維高斯分布采樣100個(gè)數(shù)據(jù)點(diǎn),圖片為:

代碼如下

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

def make_ellipses(mean, cov, ax, confidence=5.991, alpha=0.3, color="blue", eigv=False, arrow_color_list=None):
    """
    多元正態(tài)分布
    mean: 均值
    cov: 協(xié)方差矩陣
    ax: 畫(huà)布的Axes對(duì)象
    confidence: 置信橢圓置信率 # 置信區(qū)間, 95%: 5.991  99%: 9.21  90%: 4.605 
    alpha: 橢圓透明度
    eigv: 是否畫(huà)特征向量
    arrow_color_list: 箭頭顏色列表
    """
    lambda_, v = np.linalg.eig(cov)    # 計(jì)算特征值lambda_和特征向量v
    # print "lambda: ", lambda_
    # print "v: ", v
    # print "v[0, 0]: ", v[0, 0]

    sqrt_lambda = np.sqrt(np.abs(lambda_))    # 存在負(fù)的特征值, 無(wú)法開(kāi)方,取絕對(duì)值

    s = confidence
    width = 2 * np.sqrt(s) * sqrt_lambda[0]    # 計(jì)算橢圓的兩倍長(zhǎng)軸
    height = 2 * np.sqrt(s) * sqrt_lambda[1]   # 計(jì)算橢圓的兩倍短軸
    angle = np.rad2deg(np.arccos(v[0, 0]))    # 計(jì)算橢圓的旋轉(zhuǎn)角度
    ell = mpl.patches.Ellipse(xy=mean, width=width, height=height, angle=angle, color=color)    # 繪制橢圓

    ax.add_artist(ell)
    ell.set_alpha(alpha)
    # 是否畫(huà)出特征向量
    if eigv:
        # print "type(v): ", type(v)
        if arrow_color_list is None:
            arrow_color_list = [color for i in range(v.shape[0])]
        for i in range(v.shape[0]):
            v_i = v[:, i]
            scale_variable = np.sqrt(s) * sqrt_lambda[i]
            # 繪制箭頭
            """
            ax.arrow(x, y, dx, dy,    # (x, y)為箭頭起始坐標(biāo),(dx, dy)為偏移量
                     width,    # 箭頭尾部線段寬度
                     length_includes_head,    # 長(zhǎng)度是否包含箭頭
                     head_width,    # 箭頭寬度
                     head_length,    # 箭頭長(zhǎng)度
                     color,    # 箭頭顏色
                     )
            """
            ax.arrow(mean[0], mean[1], scale_variable*v_i[0], scale_variable * v_i[1], 
                     width=0.05, 
                     length_includes_head=True, 
                     head_width=0.2, 
                     head_length=0.3,
                     color=arrow_color_list[i])
            # ax.annotate("", 
            #             xy=(mean[0] + lambda_[i] * v_i[0], mean[1] + lambda_[i] * v_i[1]),
            #             xytext=(mean[0], mean[1]),
            #             arrowprops=dict(arrowstyle="->", color=arrow_color_list[i]))


    # v, w = np.linalg.eigh(cov)
    # print "v: ", v

    # # angle = np.rad2deg(np.arccos(w))
    # u = w[0] / np.linalg.norm(w[0])
    # angle = np.arctan2(u[1], u[0])
    # angle = 180 * angle / np.pi
    # s = 5.991   # 置信區(qū)間, 95%: 5.991  99%: 9.21  90%: 4.605 
    # v = 2.0 * np.sqrt(s) * np.sqrt(v)
    # ell = mpl.patches.Ellipse(xy=mean, width=v[0], height=v[1], angle=180 + angle, color="red")
    # ell.set_clip_box(ax.bbox)
    # ell.set_alpha(0.5)
    # ax.add_artist(ell)

def plot_2D_gaussian_sampling(mean, cov, ax, data_num=100, confidence=5.991, color="blue", alpha=0.3, eigv=False):
    """
    mean: 均值
    cov: 協(xié)方差矩陣
    ax: Axes對(duì)象
    confidence: 置信橢圓的置信率
    data_num: 散點(diǎn)采樣數(shù)量
    color: 顏色
    alpha: 透明度
    eigv: 是否畫(huà)特征向量的箭頭
    """
    if isinstance(mean, list) and len(mean) > 2:
        print "多元正態(tài)分布,多于2維"
        mean = mean[:2]
        cov_temp = []
        for i in range(2):
            cov_temp.append(cov[i][:2])
        cov = cov_temp
    elif isinstance(mean, np.ndarray) and mean.shape[0] > 2:
        mean = mean[:2]
        cov = cov[:2, :2]
    data = np.random.multivariate_normal(mean, cov, 100)
    x, y = data.T
    plt.scatter(x, y, s=10, c=color)
    make_ellipses(mean, cov, ax, confidence=confidence, color=color, alpha=alpha, eigv=eigv)


def main():
    # plt.figure("Multivariable Gaussian Distribution")
    plt.rcParams["figure.figsize"] = (8.0, 8.0)
    fig, ax = plt.subplots()
    ax.set_xlabel("x")
    ax.set_ylabel("y")
    print "ax:", ax

    mean = [4, 0]
    cov = [[1, 0.9], 
           [0.9, 0.5]]
    
    plot_2D_gaussian_sampling(mean=mean, cov=cov, ax=ax, eigv=True, color="r")

    mean1 = [5, 2]
    cov1 = [[1, 0],
           [0, 1]]
    plot_2D_gaussian_sampling(mean=mean1, cov=cov1, ax=ax, eigv=True)

    plt.savefig("./get_pickle_data/pic/gaussian_covariance_matrix.png")
    plt.show()



if __name__ == "__main__":
    main()


總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python Tensor和Array對(duì)比分析

    python Tensor和Array對(duì)比分析

    今天小編就為大家分享一篇python Tensor和Array對(duì)比分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 利用Python3編寫一個(gè)電腦錄屏神器

    利用Python3編寫一個(gè)電腦錄屏神器

    這篇文章主要為大家詳細(xì)介紹了如何利用Python3編寫一個(gè)簡(jiǎn)易的電腦錄屏神器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下
    2022-08-08
  • python特效之字符成像詳解

    python特效之字符成像詳解

    這篇文章主要為大家介紹了python特效之字符成像,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • 詳解PyQt5 GUI 接收UDP數(shù)據(jù)并動(dòng)態(tài)繪圖的過(guò)程(多線程間信號(hào)傳遞)

    詳解PyQt5 GUI 接收UDP數(shù)據(jù)并動(dòng)態(tài)繪圖的過(guò)程(多線程間信號(hào)傳遞)

    這篇文章主要介紹了PyQt5 GUI 接收UDP數(shù)據(jù)并動(dòng)態(tài)繪圖(多線程間信號(hào)傳遞),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Python抓取通過(guò)Ajax加載數(shù)據(jù)的示例

    Python抓取通過(guò)Ajax加載數(shù)據(jù)的示例

    在網(wǎng)頁(yè)上,有一些內(nèi)容是通過(guò)執(zhí)行Ajax請(qǐng)求動(dòng)態(tài)加載數(shù)據(jù)渲染出來(lái)的,本文主要介紹了使用Python抓取通過(guò)Ajax加載數(shù)據(jù),感興趣的可以了解一下
    2023-05-05
  • Python面向?qū)ο缶幊讨庋b的藝術(shù)你了解嗎

    Python面向?qū)ο缶幊讨庋b的藝術(shù)你了解嗎

    這篇文章主要為大家詳細(xì)介紹了Python面向?qū)ο缶幊讨庋b的藝術(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • Python3.4 splinter(模擬填寫表單)使用方法

    Python3.4 splinter(模擬填寫表單)使用方法

    今天小編就為大家分享一篇Python3.4 splinter(模擬填寫表單)使用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • python做接口測(cè)試的必要性

    python做接口測(cè)試的必要性

    在本篇文章里小編給大家整理的是關(guān)于python做接口測(cè)試的必要性以及相關(guān)知識(shí)點(diǎn),有興趣的朋友們學(xué)習(xí)下。
    2019-11-11
  • Python中將兩個(gè)或多個(gè)list合成一個(gè)list的方法小結(jié)

    Python中將兩個(gè)或多個(gè)list合成一個(gè)list的方法小結(jié)

    python中,list這種數(shù)據(jù)結(jié)構(gòu)很常用到,如果兩個(gè)或者多個(gè)list結(jié)構(gòu)相同,內(nèi)容類型相同,我們通常會(huì)將兩個(gè)或者多個(gè)list合并成一個(gè),這樣我們?cè)傺h(huán)遍歷的時(shí)候就可以一次性處理掉了
    2019-05-05
  • 解決python打開(kāi)https出現(xiàn)certificate verify failed的問(wèn)題

    解決python打開(kāi)https出現(xiàn)certificate verify failed的問(wèn)題

    這篇文章主要介紹了解決python打開(kāi)https出現(xiàn)certificate verify failed的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09

最新評(píng)論

林甸县| 宜昌市| 吴忠市| 梁山县| 临澧县| 罗甸县| 乐昌市| 广丰县| 红桥区| 蓬安县| 理塘县| 漯河市| 宝坻区| 定远县| 开远市| 奉贤区| 工布江达县| 建始县| 泰来县| 安达市| 茂名市| 德庆县| 兴宁市| 宁阳县| 滨海县| 通城县| 武川县| 开鲁县| 和林格尔县| 洛浦县| 青河县| 铜川市| 黄梅县| 绵阳市| 湘潭市| 镇坪县| 仪征市| 英山县| 大荔县| 车致| 崇左市|