精华内容
下载资源
问答
  • 在每次实验中,事件A发生的概率是0.5,求在1000次独立实验中,求事件 发生次数在475~525之间的概率。(1)用二项分布公式精确计算;(2)用正态分布近似计算;(3)用切比雪夫不等式进行估计 问题理论分析: 程序...
    1. 题目:
      在每次实验中,事件A发生的概率是0.5,求在1000次独立实验中,求事件 发生的次数在475~525之间的概率。(1)用二项分布公式精确计算;(2)用正态分布近似计算;(3)用切比雪夫不等式进行估计
    2. 问题理论分析:
      在这里插入图片描述
    3. 程序设计及必要注释,函数说明
    n=1000;   
    p=0.5;
    P=sum(binopdf([475:525],n,p))   %用二项分布的计算
    P1=normcdf((525-n*p)/sqrt(n*p*(1-p)))-normcdf((475-n*p)/sqrt(n*p*(1-p)))    %正态分布的计算
    P2=1-(n*p*(1-p))/25^2   %用切比雪夫不等式计算
    

    函数说明:

    • y=binopdf(x,n,p) :计算在 x 处, 参数是 n, p 的二项分布的概率 .
      输入参数 x, n, p 可以是标量、向量、矩阵 . 输出参数与输入参数的形式一致 . 其中输入参数中可以有一个或两个是标量 , 另外的输入参数是向量或矩阵 , 这时 , 输出形式是向量或矩阵 .
    • y=normcdf(x, mu, sigma) : 输入参数可以是标量、向量、矩阵 . 一个常数输入参数 ,可以扩展成与其它输入参数相同的常数向量或矩阵 .
    1. 结果呈现及结果分析:
      P = 0.8933
      P1 = 0.8862
      P2 = 0.6000
      结果分析:
      通过利用三种不同的求解方法,由求解原理以及结果分析可得: 二项分布和正态分布较为准确, 但需要知道题目的相关分布. 切比雪夫不等式比较其他两种来说, 不精确但不需知道分布情况.
    展开全文
  • AUC的三种计算方法

    千次阅读 2021-01-28 16:48:12
    他们被预测为正的概率都是0.8,那么它们排序关系就很重要了,把正样本排在前面和负样本排在前面对应是两不同曲线,得到曲线面积AUC自然也就是不相同,因此网上大多都没有采用面积计算法。 ``` def my_...

    小广告

    (欢迎大家关注我的公众号机器学习面试基地”,之后将在公众号上持续记录本人从非科班转到算法路上的学习心得、笔经面经、心得体会。未来的重点也会主要放在机器学习面试上!)

    1. 面积计算法,直接计算ROC曲线下的面积。利用一个变量来记录每个矩形的高度,正例时只增加高度,只有遇到负例曲线往右走时才累加面积。其实这样的计算方式是很简洁的,但是不能应对概率相等的情况。比如对于一个正样本和一个负样本,他们被预测为正的概率都是0.8,那么它们的排序关系就很重要了,把正样本排在前面和负样本排在前面对应的是两种不同的曲线,得到的曲线面积AUC自然也就是不相同的,因此网上大多都没有采用面积计算法

      def my_auc_calculate(labels,preds):
          pos_len = sum(labels)
          neg_len = len(labels) - pos_len
          comb = zip(labels,preds)
          comb = sorted(comb, key=lambda x: -x[1])
          height = 0
          my_auc = 0
          for i in range(len(comb)):
              if comb[i][0] == 1:
                  height += 1/pos_len
              else:
                  my_auc += height/neg_len
          return my_auc
      y = np.array([1, 0, 0, 0, 1, 0, 1, 0])
      pred = np.array([0.9, 0.1, 0.4, 0, 0.8, 0,     0.66, 0.75])
      res = my_auc_calculate(y, pred)
      print(res)
      
    2. 概率计算法,这种算法也十分简洁。它利用了AUC另外一个物理含义就是:那么AUC的含义就是所有穷举所有的正负样本对,正样本的概率大于负样本的概率。给定正样本M个,负样本N个,计算可以通过遍历所有情况,如果正样本的预测概率大于负样本的预测概率,那么就+1;如果如果正样本的预测概率等于负样本的预测概率,那么就+0.5, 如果正样本的预测概率小于负样本的预测概率,那么就+0;最后把统计处理的个数除以M×N就得到我们的AUC.参考自https://zhuanlan.zhihu.com/p/84035782

      def AUC(label, pre):
          pos = [i for i in range(len(label)) if label[i] == 1]
          neg = [i for i in range(len(label)) if label[i] == 0]
          #计算正样本和负样本的索引,以便索引出之后的概率值
          auc = 0
          for i in pos:
              for j in neg:
                  if pre[i] > pre[j]:
                      auc += 1
                  elif pre[i] == pre[j]:
                      auc += 0.5
          return auc / (len(pos)*len(neg))
      
    3. 第三种方法也是上面的概率计算法,但是它用了两个个概率直方图来分别记录每个预测概率对应的正负样本的数量。比如0.8概率对应10个正样本,那么0.8以下的所有负样本之和乘以10个正样本数,就得到了0.8的正样本对应的比它小的负样本数,当然还有概率相同的0.8的负样本,需要*0.5。同理按照上述方法遍历所有概率值,就能得到所有正样本概率大于负样本概率的数量。最后除以所有的样本对数即可。
      - 其中n_bins对应了概率直方图的精度,如果预测概率只保留一位小数点,那么n_bins=10就行,如果保留两位小数点,那么=100就行,依次类推。。。
      - 参考自 https://zhuanlan.zhihu.com/p/84035782

      import numpy as np
      from sklearn import metrics
      def auc_calculate(labels,preds,n_bins=100):
          postive_len = sum(labels)
          negative_len = len(labels) - postive_len
          total_case = postive_len * negative_len
          pos_histogram = [0 for _ in range(n_bins)]
          neg_histogram = [0 for _ in range(n_bins)]
          bin_width = 1.0 / n_bins
          for i in range(len(labels)):
              nth_bin = int(preds[i]/bin_width)
              if labels[i]==1:
                  pos_histogram[nth_bin] += 1
              else:
                  neg_histogram[nth_bin] += 1
          accumulated_neg = 0
          satisfied_pair = 0
          for i in range(n_bins):
              satisfied_pair += (pos_histogram[i]*accumulated_neg + pos_histogram[i]*neg_histogram[i]*0.5)
              accumulated_neg += neg_histogram[i]
          return satisfied_pair / float(total_case)
      if __name__ == '__main__':
          y = np.array([1,0,0,0,1,0,1,0,])
          pred = np.array([0.9, 0.8, 0.3, 0.1,0.4,0.9,0.66,0.7])
          print("-----sklearn:",metrics.roc_auc_score(y, pred))
          print("-----py脚本:",auc_calculate(y,pred))
      
    展开全文
  • 利用概率论中指数分布、正态分布和卡方分布的概率密度函数与数字特征,对微积分中三种特殊类型积分进行了计算,得到了这3种特殊类型积分的计算公式,体现了概率方法计算某些类型积分时简便性,进而也从一个侧面...
  • tensorflow中交叉熵的三种计算方法 1、交叉熵公式表示为: H(p,q)=−∑i=1np(xi)log(q(xi))H(p,q)=-\sum_{i=1}^{n}p(x_i)log(q(x_i))H(p,q)=−∑i=1n​p(xi​)log(q(xi​)) q(xi)q(x_i)q(xi​)预测的概率值(softmax...

    tensorflow中交叉熵的三种计算方法
    1、交叉熵公式表示为:

    H(p,q)=i=1np(xi)log(q(xi))H(p,q)=-\sum_{i=1}^{n}p(x_i)log(q(x_i))

    q(xi)q(x_i)预测的概率值(softmax之后);p(xi)p(x_i)真实Y的概率值(一般为one-hot编码)

    2、tf.nn.softmax_cross_entropy_with_logits(logits, labels))
    logits是神经网络预测值(未经softmax),labels是真实Y的概率值(一般为one-hot编码)

    3、tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels))
    logits是神经网络预测值(未经softmax),labels是真实Y的位置码
    例子:

    import tensorflow as tf
    
    logits = tf.constant([[1, 2, 3], [2, 1, 3], [3, 1, 2]], tf.float64)# batch为3的3分类的神经网络输出
    y = tf.nn.softmax(logits)#归一化(转换成概率)
    y_ = tf.constant([[0, 0, 1], [0, 1, 0], [0, 0, 1]], tf.float64)#真是Y one-hot
    y_sparse = tf.constant([2,1,2], tf.int32)#真是Y的位置码
    
    cross_ent = -tf.reduce_sum(y_ * tf.log(y))
    cross_ent2 = tf.reduce_sum(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=y_))
    cross_ent3 = tf.reduce_sum(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y_sparse))
    
    with tf.Session() as sess:
    	print('cross_ent: ', sess.run(cross_ent))
    	print('cross_ent2: ', sess.run(cross_ent2))
    	print('cross_ent3: ', sess.run(cross_ent3))
    	print('y: ', sess.run(y))
    
    
    
    展开全文
  • 针对流计算模式中动态对象增量与减量同步发生现象,提出了一种概率粗糙集支决策快速流计算方法。首先讨论了流计算模式中决策信息系统单对象增减更新模式数据模式;然后基于流计算数据变化模式分别提出了...
  • 目前,概率方法、模糊方法和区间方法是不确定性建模的三种主要方法。本文把具有不确定性的结构材料参数、几何参数和所受外力用区间数描述,通过求解线性区间方程组准确地计算了结构静态响应。计算结果易于扩张是区间...
  • 以上总体标准差计算方法都有个明显问题: 代码实现时需要用一个数组来保存所有要计算数据,如果数据比较大,那么会耗费非常大空间。 计算时需要对数组总体进行两次遍历,一次计算平均值,一次计算...

    标准差(Standard Deviation)是概率统计学上非常重要的概念,它被用来描述一组数据的离散程度。
    根据标准差的定义,总体标准差σ表示为:总体标准差而样本标准差S表示为:样本标准差
    总体标准差还有另外一种表示方式:总体标准差2

    以上的两种总体标准差计算方法都有三个明显的问题:

    1. 代码实现时需要用一个数组来保存所有要计算的数据,如果数据比较大,那么会耗费非常大的空间。
    2. 计算时需要对数组总体进行两次遍历,一次计算平均值,一次计算平方,数据较多时耗时也非常大。
    3. 对于数据整体差距不大的情况,由于对接近0的浮点数做了平方计算,在数据非常多时累计损失的精度会较大,最终导致计算错误。

    针对以上的3个问题,一个叫Welford的大神提出了一种迭代计算标准差的方法:
    首先,将均值和方差初始化为0:M1 = x1,S1 = 0,
    然后通过以下迭代公式计算每次来新的数据后的均值和标准差:
    Mk = Mk-1+ (xk – Mk-1)/k
    Sk = Sk-1 + (xk – Mk-1)*(xk – Mk)。
    前k个数据的标准差为:s2 = Sk/(k – 1)。(样本标准差用k-1,总体标准差用k)
    该计算方法只需要保存两个数据:Mk 和Sk,耗费的空间非常小。由于使用的是迭代的方式,每次的计算量也是非常小的。
    通过MATLAB产生1000 000 000个0-1的浮点数,然后分别采用以上三种方法计算放差,最后可以发现方法三最有,方法一表现也尚可,而方法二损失精度非常多,甚至出现了负数的结果。
    以下通过MATLAB计算数据集data(可以自己用随机函数生成)每50个数据的方差,对比Welford法和MATLAB内置的var函数(总体方差,除以N)的计算结果,可以发现两者结果是一致的,大家也可以尝试直接计算一个大数据集的标准差,并对比两种方法的精度。

    data = rand(10000, 1);
    len = length(data);
    Mk = data(1);
    Mk_1 = Mk;
    Sk = 0;
    Sk_1 = Sk;
    S = zeros(len, 1);
    V = zeros(len, 1);
    k = 1;
    for i = 1:len
        k = mod(i, 50);
        if k == 0
            k = 50;
        end
        xk = data(i);
        Mk = Mk_1 + (xk - Mk_1)/k;
        Sk = Sk_1 + (xk - Mk_1)*(xk - Mk);
        if mod(i, 50) == 0
            S(i) = Sk / k;
            V(i) = var(data(i-49:i), 1);
            Mk = data(i);
            Sk = 0;
        end
        Mk_1 = Mk;
        Sk_1 = Sk;
    end
    figure
    hold on
    grid minor
    plot(V)
    plot(S)
    legend("matlab var", "Welford Method”)
    

    参考资料:百度百科、维基百科

    展开全文
  • matlab说话代码贝叶斯视角多边问题解决方案 该存储库保存文件和Daniel Jean女士论文,该论文研究了许多分布,这些分布是贝叶斯推理似然分布。 对于所有情况,我们都使用相同...最大化是通过以下三种方法之一
  • 本文研究了区问变量的一般运算规则,给出了非概率可靠性指标的三种求解方法:定义法、转换法和优化法。给出了定义法的具体描述和实现方法,并给出了转换法的一般求解步骤和一种可通用的区间优化算法的实现过程。三种...
  • 计算机视觉的三种层次

    千次阅读 2013-09-24 09:01:34
    计算机视觉信号处理层次 低层视觉处理 单图像:滤波/边缘检测/纹理 多图像:几何/立体/从运动恢复仿射或透视结构 affine/perspective structure frommotion ...基于概率方法的聚类分割/拟合 跟踪 tra
  • 本篇文章介绍计算圆周率算法,都是应用蒙特卡罗思想:或称计算机随机模拟方法,是一基于“随机数”的计算方法。 方法一:蒙特卡罗方法,内切圆 1.1思想  有一个以(0,0)为中心2*2正方形,及...
  • 统计学:概率计算

    2019-11-29 14:32:29
    概率的量度尺度是0-1,如果某件事不可能发生,则其概率为0;如果某件事肯定会发生,则其概率为1。 二、维恩图 画一个方框代表样本空间S,然后画几个圆圈代表各个相关事件,这种图被称为维恩图。 、对立事件...
  • 因此,本文在文章的开篇部分将对本文中所描述的三种具有对称性的信道进行严格定义,以减小文章出现歧义的概率。 Symmetric Channel: 对称信道(Symmetric Channel)是最严格的对称性信道,该信道要求: 对于...
  • 在MATLAB中的三种归一化方法

    万次阅读 2017-04-21 13:49:30
    无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中统计分别几率来进行训练(概率计算)和预测,且sigmoid函数取值是0到1之间,网络最后一个节点输出也是如此,所以经常要对...
  • 用测试集计算了词性之间转移概率,转换成矩阵;以及词性到单词发射概率,转换成矩阵,记得import numpy as np。 veterbi 算法获取预测词性结果,因为我传进去观察序列,也就是测试句转换成单词表,是训练...
  • 基于条件概率马尔科夫链模拟,提出了一可靠性灵敏度函数求解方法,并提出了一可靠性灵敏度度量指标,它为参数可靠性灵敏度函数在参数空间上期望。文中推导了线性极限状态正态变量下全局灵敏度函数及新指标...
  • 提出PRSBS是一高效监督频带选择算法,因为它只需要计算一阶有效度量即可。 所提出PRSBS算法主要新颖之处在于标准函数,该标准函数测量了所考虑频带有效性。 PRSBS算法使用概率分布依赖性作为波段和...
  • 针对计算流体力学应用开发框架容错支持能力不足,提出了一容错周期优化方法。该方法基于系统故障的概率建模,计算得到理想最优容错周期;并结合计算流体力学应用场数据输出特点,在线确定实际检查点备份时机。...
  • 摘自 1.李航《统计学习方法》 ... 一、概率计算问题 上一篇介绍了概率计算问题是给定了...用三种方法,直接计算法,前向算法,后向算法。 考虑隐马尔可夫模型(一)中盒子球模型。 假设Q={1,2,3,4}, V = {...
  • 以穿透概率方法为基础,依照等效均匀化理论要求计算了燃料组件和围板/反射层等效均匀化参数。研制了相应具有热工等反馈两群维压水堆(PWR)燃料管理计算软件包(RTPFAP/RSIM),克服了传统程序基于1.5群、...
  • Matlab三种归一化方法

    万次阅读 2015-12-13 11:26:14
    无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中统计分别几率来进行训练(概率计算)和预测,且sigmoid函数取值是0到1之间,网络最后一个节点输出也是如此,所以经常要对...
  • 蒙特·卡罗方法(MonteCarlomethod),也称统计模拟方法,一概率统计理论为指导一类非常重要数值计算方法。是指使用随机数(或更常见伪随机数)来解决很多计算问题方法。 二、蒙特卡洛法计算圆周率...
  • 概率

    2018-06-08 20:22:05
    思路:组成四个队伍方法数:任选一个队伍分别有 7选择对手方式,在选一个队伍 有5选择队友方式…:7*5*3*2 两强不相遇的概率支强队分别先占组,选择对手方式方式:5*4*3。 所以相遇的概率:3/7 .....
  • Matlab--三种归一化方法

    千次阅读 2019-04-19 20:27:38
    无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中统计分别几率来进行训练(概率计算)和预测,且sigmoid函数取值是0到1之间,网络最后一个节点输出也是如此,所以经常要对...
  • 平摊分析(摊还分析) 我们有时候会有一个算法,或者只是单纯的一系列操作,当我们需要将这一些操作计算一个平均代价,但是又不涉及概率的问题...三种方法 聚集法 看名字就知道了,这个方法也是很简单粗暴的,就是将所
  • 一、中断线程 1、Thread.sleep() 让线程休眠,以毫秒计算 例如:Thread.sleep(2000); 该方法会产生异常,需要使用try……...二、线程优先级 优先级范围1~10 优先级越高线程执行的概率就越大 1、getPriority() 2、
  • 为了提高基于覆盖率缺陷定位方法的效率和准确率,将执行轨迹中被失效执行所覆盖基本块(C-failure)、被全部执行所覆盖基本块(C-all)和未被任何执行所覆盖基本块(C-non)这个小概率事件进行了分析,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 539
精华内容 215
关键字:

概率的三种计算方法