统计机器学习-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(xp)=k=1dpkxk
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=1Nk=1dpkxnk)=log(k=1dpkmk) m k = ∑ n x n k m_k=\sum_n x_{nk} mk=nxnk
极大似然估计:
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=1Nk=1dpkxnk)=ln(k=1dpkmk)=k=1dmklnpk+λ(k=1dpk1)
               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=1dpk1)   的由来
是因为    ∑ k = 1 d p k = 1 \sum_{k=1}^d p_k =1 k=1dpk=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 xi0
分布函数:
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} Cnx1Cnx1x2...Cnx1x2+...xd1xdp1x1...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,nx(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(1pj)                          (j=j)npjpj                                 (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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于cpp中左值和右值的细枝末节

    一、基本概念  本文主要分析右值引用中的:移动语意(movesemantics)。  要想理解右值,首先得能够判断具体什么是右值,先来看一些关于右值的判定条件:  一、任何表达式不是左值就是右值,左值和右值只的是针对表达式定义的。      这个比较容易理解,inttemp=10,func(),doublea=0.0,x++,++x,*ptr,x+y这些都是…

    2022年4月7日
    142
  • C# SplitContainer 控件详细用法

    C# SplitContainer 控件详细用法1.可以将Windows窗体SplitContainer控件看作是一个复合体,它是由一个可移动的拆分条分隔的两个面板。当鼠标指针悬停在该拆分条上时,指针将相应地改变形状以显示该拆分条是可移动的。使用SplitContainer控件,可以创建复合的用户界面(通常,在一个面板中的选择决定了在另一个面板中显示哪些对象)。这种排列对于显示和浏览信息非常有用。拥有两个面板使您可以聚合不同区域中的信息,并且用户可以轻松地使用拆分条(也称为“拆分器”)调整面板的大小。另外,还可以嵌套多个SplitC…

    2022年7月18日
    72
  • ubuntu12.04安装deadbeef

    ubuntu12.04安装deadbeef今天在 linux 吧 nbsp nbsp 被几位大神吐槽了 nbsp nbsp 可能是因为问题太愚蠢了吧 nbsp 具体是什么问题 nbsp 还真不好意思说 nbsp nbsp 想想还是自己解决吧 nbsp nbsp 看看源码 nbsp 自己学着来听说 deadbeef 比较是 linux 下比较好的音乐播放器 nbsp nbsp 装了看看做一下记录 nbsp nbsp 发现自己的 ubuntu12 04 装了太多东西 nbsp 真的得好好记录装了什么 nbsp nbsp nbsp 之前 wine 后装了个 deepin nbsp mus

    2025年10月14日
    2
  • abstract修改方法

    abstract修改方法

    2021年12月31日
    57
  • 如何盗微信号 除了验证码_微信2个好友验证码破解

    如何盗微信号 除了验证码_微信2个好友验证码破解光凭验证码就可以盗号!微信盗号新手段揭秘91.com移动互联网第一平台时间:2014-06-30[网站合作]快速评论分享到QQ好友新浪微博91娱乐目前有一种新型盗号方式即骗取用户手机验证码来盗取用户微信QQ等帐号,从而进一步盗取其中的微信银行账户、密码以及账单明细,所以平时疏忽大意的童鞋一定要小心谨慎噢。话说有一天,小编的微信忽然就收到了朋

    2022年4月19日
    104
  • dos命令打开文件夹_dos命令开启无线网络

    dos命令打开文件夹_dos命令开启无线网络如何用dos命令查看文件?首先通过cd进入文件所在目录,然后执行start命令即可。【startfileName】:打开文件

    2022年10月14日
    2

发表回复

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

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