统计机器学习-Multinoulli分布、多项式分布

统计机器学习-Multinoulli分布、多项式分布Multinoulli分布(多元伯努利分布):模型:       Mu(p)Mu(p)Mu(p)       d面????获得每一面的概率: p1,p2,…,pdp_1,p_2,…,p_dp1​,p2​,…,pd​分布函数:p(x∣p)=∏k=1dpkxkp(x|p)=\prod_{k=1}^dp_k^{x_k}p(x∣p)=k=1∏d​pkxk​​E(X)=pE(X)=pE(…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Multinoulli分布(多元伯努利分布):

模型:        M u ( p ) Mu(p) Mu(p)

        d面?获得每一面的概率:  p 1 , p 2 , . . . , p d p_1,p_2,…,p_d p1​,p2​,...,pd​

分布函数:
p ( x ∣ p ) = ∏ k = 1 d p k x k p(x|p)=\prod_{k=1}^d p_k^{x_k} p(x∣p)=k=1∏d​pkxk​​
E ( X ) = p E(X)=p E(X)=p
似然函数:
L = l o g ( ∏ n = 1 N ∏ k = 1 d p k x n k ) = l o g ( ∏ k = 1 d p k m k ) L=log(\prod_{n=1}^N \prod_{k=1}^d p_k^{x_{nk}})=log( \prod_{k=1}^d p_k^{m_k}) L=log(n=1∏N​k=1∏d​pkxnk​​)=log(k=1∏d​pkmk​​) m k = ∑ n x n k m_k=\sum_n x_{nk} mk​=n∑​xnk​
极大似然估计:
L = l n ( ∏ n = 1 → N ∏ k = 1 → d p k x n k ) = l n ( ∏ k = 1 → d p k m k ) = ∑ k = 1 → d m k l n p k + λ ( ∑ k = 1 → d p k − 1 ) L = ln(\prod^{n=1\to N}\prod^{k=1\to d}p_k^{x_{nk}}) = ln(\prod^{k=1\to d}p_k^{m_k}) = \sum^{k=1\to d}m_k lnp_k+\lambda(\sum^{k=1\to d}p_k-1) L=ln(∏n=1→N​∏k=1→d​pkxnk​​)=ln(∏k=1→d​pkmk​​)=∑k=1→d​mk​lnpk​+λ(∑k=1→d​pk​−1)
               p k = m k λ p_k=\frac{m_k}{\lambda} pk​=λmk​​    λ = − N \lambda=-N λ=−N

其中    λ ( ∑ k = 1 d p k − 1 ) \lambda(\sum_{k=1}^{d}p_k-1) λ(∑k=1d​pk​−1)   的由来
是因为    ∑ k = 1 d p k = 1 \sum_{k=1}^d p_k =1 ∑k=1d​pk​=1   ,
(概率密度函数和为1),在做极大似然估计时候,必须满足这一条件。对于带有约束的优化问题,常用拉格朗日乘子法,   λ > 0 \lambda>0 λ>0  表示拉格朗日乘数,表示约束条件的强度。

多项式分布:

模型:        M u l t ( n , p ) Mult(n,p) Mult(n,p)
        d面?获得每一面的概率:  p 1 , p 2 , . . . , p d p_1,p_2,…,p_d p1​,p2​,...,pd​
        掷了n次,每面出现的次数: ( x 1 , x 2 , . . . , x d ) (x_1,x_2,…,x_d) (x1​,x2​,...,xd​)
        满足条件: x 1 + x 2 + . . . + x d = n x_1+x_2+…+x_d=n x1​+x2​+...+xd​=n
              x i ≥ 0 x_i≥0 xi​≥0
分布函数:
C n x 1 C n − x 1 x 2 . . . C n − x 1 − x 2 + . . . x d − 1 x d p 1 x 1 . . . p d x d C_n^{x_1}C_{n-x_1}^{x_2}…C_{n-x_1-x_2+…x_{d-1}}^{x_d}p_1^{x_1}…p_d^{x_d} Cnx1​​Cn−x1​x2​​...Cn−x1​−x2​+...xd−1​xd​​p1x1​​...pdxd​​
f ( x ) = n ! x ( 1 ) ! . . . x ( d ) ! ( p 1 ) x ( 1 ) . . . ( p d ) x ( d ) f(x)=\frac{n!}{x^{(1)}!…x^{(d)}!}(p_1)^{x^{(1)}}…(p_d)^{x^{(d)}} f(x)=x(1)!...x(d)!n!​(p1​)x(1)...(pd​)x(d)
多项式展开定理:
( p 1 + . . . + p d ) n = ∑ x ∈ Δ d , n n ! x ( 1 ) ! . . . x ( d ) ! ( p 1 ) x ( 1 ) . . . ( p d ) x ( d ) (p_1+…+p_d)^n=\sum_{x∈ \Delta d,n}\frac{n!}{x^{(1)}!…x^{(d)}!}(p_1)^{x^{(1)}}…(p_d)^{x^{(d)}} (p1​+...+pd​)n=x∈Δd,n∑​x(1)!...x(d)!n!​(p1​)x(1)...(pd​)x(d)
矩生成函数:
在这里插入图片描述
E ( x j ) = n p j E(x^j)=np_j E(xj)=npj​
C o v [ x ( j ) , x ( j ′ ) ] = { n p j ( 1 − p j )                            ( j = j ′ ) − n p j p j ′                                   ( j ≠ j ′ ) Cov[x^{(j)},x^{(j’)}]= \begin{cases} np_j(1-p_j) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (j=j’) \\ -np_jp_{j’} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (j≠j’) \end{cases} Cov[x(j),x(j′)]={
npj​(1−pj​)                          (j=j′)−npj​pj′​                                 (j​=j′)​

在这里插入图片描述

一个服从多项式分布的例子:

在这里插入图片描述
将 这 个 基 因 碱 基 序 列 可 视 化 将这个基因碱基序列可视化 将这个基因碱基序列可视化

Matplotlib:

import xlrd as xl
import numpy as np
from collections import Counter
import matplotlib.pyplot as plt
import pandas as pd

data = xl.open_workbook("等位基因.xlsx")
table = data.sheets()[0]
if data.sheet_loaded(sheet_name_or_index=0):
    cols = table.ncols  # 列数
    lists = [table.col_values(_) for _ in range(cols)]
    list_x = [_ for _ in range(1, len(lists) + 1)]
    list_A = []
    list_G = []
    list_C = []
    list_T = []
    for item in lists:
        dicts = dict(Counter(item))
        list_A.append(dicts.get('A', 0))
        list_G.append(dicts.get('G', 0))
        list_C.append(dicts.get('C', 0))
        list_T.append(dicts.get('T', 0))
    columns = ('A', 'G', 'C', 'T')
    data = []
    data.append(list_A)
    data.append(list_G)
    data.append(list_C)
    data.append(list_T)
    data = np.array(data)
    data = data.T
    df = pd.DataFrame(data, columns=columns, index=[_ for _ in range(1, cols + 1)])
    df.plot(kind='bar', stacked=True,colormap="cool_r",legend="reverse")
    print(df)
    ax=plt.gca()
    ax.spines['right'].set_color('none')
    ax.spines['top'].set_color('none')
    plt.xlabel("Sequence Position")
    plt.ylabel("Bits")
    plt.show()

else:
    print("打开文件失败")

在这里插入图片描述
Pyecharts:

import xlrd as xl
import numpy as np
from pyecharts.charts import *
from collections import Counter
from pyecharts import options as opts
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
from pyecharts.globals import ThemeType

data = xl.open_workbook("等位基因.xlsx")
# table=data.sheet_by_name('Sheet1')
# table=data.sheet_by_index(0)
table = data.sheets()[0]
if data.sheet_loaded(sheet_name_or_index=0):
    rows = table.nrows  # 行数
    cols = table.ncols  # 列数
    lists = [table.col_values(_) for _ in range(cols)]
    list_x = [_ for _ in range(1, len(lists) + 1)]
    list_A = []
    list_G = []
    list_C = []
    list_T = []
    for item in lists:
        dicts = dict(Counter(item))
        list_A.append(dicts.get('A', 0))
        list_G.append(dicts.get('G', 0))
        list_C.append(dicts.get('C', 0))
        list_T.append(dicts.get('T', 0))
    bar = (
        Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
            .add_xaxis(list_x)
            .add_yaxis("A", list_A, stack='stack1')
            .add_yaxis("G", list_G, stack='stack1')
            .add_yaxis("C", list_C, stack='stack1')
            .add_yaxis("T", list_T, stack='stack1')
            .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
            .set_global_opts(title_opts=opts.TitleOpts(pos_left="10%"),
                             yaxis_opts=opts.AxisOpts(name="Bits"),
                             xaxis_opts=opts.AxisOpts(name="Sequence Position")))
    make_snapshot(snapshot, bar.render(), "111.png")
else:
    print("打开文件失败")

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183914.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深信服SCSA认证复习笔记三

    深信服SCSA认证复习笔记三深信服复习笔记三基础题目:1.最大传输单元(MTU)用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小。是包或者帧的最大长度,一般以字节记。如果MTU过大,则路由器会拒绝此包,并下发通知源节点2.Telnet是常用的远程控制Web服务器的方法。这个可以判断网络是不是畅通的这一种方法,ping命名不能准确表示是不是在可以上网。3.防火墙:传统防火墙(包过滤防火墙)判断信息(五元组)工作范围(网络层,传输层)4.防火墙部署模式:路由模式透明模式虚拟网线模式混合模式旁

    2022年6月20日
  • 新手学计算机编程怎么入门 从哪学起

    新手学计算机编程怎么入门 从哪学起近些年有一种职业发展很快、人才需求量大、工资高,那就是程序员。他们的基本工作就是电脑编程,开发者各种各样的软件、APP,被很多人膜拜。如果你想成为一名程序员,有必要了解一下这些基本的电脑编程入门教程。1计算机编程怎么入门1、选择一门编程语言。虽然目前编程语言有600种左右,但是比较流行的编程语言只有几十种,所以尽量选择流行程度比较高的编程语言来入门编程。对于没有明确编程场景的初学者来说,尽量选择全场景编程语言,比如Java、Python、就是不错的选择,不仅应用范围广泛,而且也有大量的开发案例可以参

    2022年6月15日
  • JAVA课程设计——飞机大战(团队)

    JAVA课程设计——飞机大战(团队)

    2021年10月6日
  • 吐槽下安卓手机_吐槽手机像素不好的说说

    吐槽下安卓手机_吐槽手机像素不好的说说吐槽下安卓手机安卓手机的问题:1、安卓的机子运行时间长了,都需要折腾的,这就跟电脑一样,3-6个月恢复一次系统才快。很少有安卓系统不预装自己的软件的。2、安卓手机为了炒作,很多配备多核CPU,导致发热量很大,掉电很快,手机发烫厉害影响手感。3、曲面屏,这是营销炒作出来的卖点,曲面屏由于外框没有保护,很容易摔碎,而且也有误触的问题。4、有些手机采用了窄边框,而误触处理没有做好,导致用户体验极差,这不…

    2022年9月2日
  • 【题解】PTA-Python题库 浙大版《Python 程序设计》题目集题解索引[通俗易懂]

    【题解】PTA-Python题库 浙大版《Python 程序设计》题目集题解索引[通俗易懂]编程题标号标题第1章-1从键盘输入两个数,求它们的和并输出第1章-2从键盘输入三个数到a,b,c中,按公式值输出第1章-3输出“Python语言简单易学”第2章-1计算11+12+13+…+m第2章-2计算分段函数[1]第2章-3阶梯电价第2章-4特殊a串数列求和第2章-5求奇数分之一序列前N项和第2章-6求…

    2022年10月29日
  • 爆肝两万字,我爷爷都看的懂的《栈和队列》,建议各位观众姥爷先收藏

    爆肝两万字,我爷爷都看的懂的《栈和队列》,建议各位观众姥爷先收藏文章目录一、栈????栈的概念及结构????栈的实现二、队列????队列的概念及结构????队列的实现三、栈和队面试题四、概念选择题????1????2一、栈????栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称库栈底。栈中的数据元素遵守后进先出LIFO(LastInFirstOut)的原则栈有两个经典的操作1️⃣压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。2️⃣出栈:栈的删除操

    2022年6月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号