精华内容
下载资源
问答
  • python中获取中位数的两种方法
    千次阅读
    2021-01-11 22:06:18

    普通方法:

    对列表进行排序,然后根据长度为奇数或者偶数的不同情况计算中位数

    def huahua(x):

    length = len(x)

    print(length)

    x.sort()

    print(x)

    if (length % 2)== 1:

    z=length // 2

    y = x[z]

    else:

    y = (x[length//2]+x[length//2-1])/2

    return y

    l = [1,2,3,7,5,6,4,9,8,10]

    print(huahua(l))

    最佳方法:

    采用取反的方式来求中位数,排序后结果为l=[1,2,3,4,5,6,7,8,9,10],长度为10,half=10//2=5,x[5]为列表的第六位数,5的取反数为-6,x[-6]实际上是对列表进行反向查找,为列表中的第五位数,长度为偶数10时中值5+6/2=5.5。

    当结果为l=[1,2,3,4,5,6,7,8,9]时,长度为9,half=9//2=4,x[4]为列表的第五位数,4取反为-5,x[-5]在列表中是正向反向查找中的第五位数,所以x[4]==x[-5],中位数就为x[4]或者x[-5]。

    def median(data):

    data.sort()

    half = len(data) // 2

    return (data[half] + data[~half])/2

    l = [1,2,3,7,5,6,4,9,8,10]

    if __name__ == '__main__':

    print(median(l))

    更多相关内容
  • 中位数计算

    千次阅读 2016-09-29 18:24:07
    题目中位数计算。选择你熟悉的编程语言实现教材P31上公式(2.3)的算法,用于估算大量数据的中位数。下载测试数据文件(1百万条数据,中位数为49899),选择不同的区间大小(width),考察计算结果与真实中位数的...

    题目


    中位数计算。选择你熟悉的编程语言实现教材P31上公式(2.3)的算法,用于估算大量数据的中位数。下载测试数据文件(1百万条数据,中位数为49899),选择不同的区间大小(width),考察计算结果与真实中位数的误差。

    公式


    数据挖掘 中位数计算

    代码实现


    matlab

    clear all;
    clc;
    
    N = 1000000;
    width = 100;    %区间长度
    [a] = textread('rand1m.txt','%d');
    %此处可直接使用median(a)求出中位数49899
    
    max = max(a);       %用其他语言的话,最值可用冒泡排序求出
    min = min(a);
    num = (max - min) / width;
    num = round(num);       %向上取整
    count = zeros(num,1);   %保存各区间的个数
    
    %计for i = 1:N
        count(floor((a(i)-min)/width+1)) = count(floor((a(i)-min)/width+1)) + 1;
    end
    
    %确定中位数所在的区间位置index
    %计算该区间以前的频数和sigma
    sigma = 0;
    index = 1;
    while N/2-sigma>0
        sigma = sigma + count(index);
        index = index +1;  
    end
    index = index -1;
    sigma = sigma - count(index);
    
    %根据公式计算中位数
    L1 = min + width*(index-1);
    median = L1 +((N/2-sigma)/count(index)) * width;
    median = fix(median);
    

    C

    #include<stdio.h>
    const int width=100;    //区间长度
    void main(){
        FILE *fp1,*fp2;
        int a,max=2000,min=2000,N=0,median;
        if( (fp1 = fopen("rand1m.txt","r"))==NULL ) 
            printf("error");
    
        //取出最大值与最小值
        while(fscanf(fp1,"%d%*[^0-9]",&a)>0){
            if(a>=max)
                max = a;
            if(a<=min)
                min = a;
            N++;
        }
        fclose(fp1);
    
        int num = (max - min) / width +1;   //区间个数
        int* count = new int[num];      //区间频数
        for(int i=0; i<num; ++i)
            count[i]=0;
    
        if( (fp2 = fopen("rand1m.txt","r"))==NULL ) 
            printf("error");
    
        //计数
        while(fscanf(fp2,"%d%*[^0-9]",&a)>0){
            count[(a-min)/width]++;
        }
        fclose(fp2);
    
        //确定区间index 统计index前所有区间频数和sigma
        int sigma = 0;
        int index = 0;
        while(N/2 - sigma >0){
            sigma += count[index];
            index ++;
        }
        index --;
        sigma -= count[index];
    
        //套用公式
        int L1 = min + width*index;     //区间下限
        double rate = (1.0) * (N/2-sigma) / count[index];
        median = L1 + rate * width;
    
        printf("L1=%d\nmedian=%d\n",L1,median);
    
    }
    
    展开全文
  • 众数中位数在分组区间计算方法

    千次阅读 2020-03-13 09:40:09
  • 大数据查找中位数

    千次阅读 2020-12-28 21:24:25
    前两天同学面试遇到的一道题,大数据怎么找出中位数。大数据 --> 所有数据不能一下子读入内存中位数 --> 需要遍历所有数据1. 题目在一个大文件中有100亿个32位整数,乱序排列,要求找出中位数;内存限制为512M...

    前两天同学面试遇到的一道题,大数据怎么找出中位数。大数据 --> 所有数据不能一下子读入内存

    中位数 --> 需要遍历所有数据

    1. 题目

    在一个大文件中有100亿个32位整数,乱序排列,要求找出中位数;内存限制为512M;请写出算法设计思路;

    2. 基本知识b --> bit 比特,位(二进制中的位)

    B --> Byte 字节,1个字节=8位,1B=8bit

    K --> KB 千字节,1KB = 1024B

    M --> MB 兆字节,1M = 1024KB = 1024*1024B

    G --> GB 1GB = 1024MB

    问题分析:

    100亿个32位整数,那么占用内存为:100亿*32 b = 100亿*32/8 B = 100亿*32/8/1024 KB = 100亿*32/8/1024/1024 MB = 38146.9727 MB > 512M

    所以肯定不能一次全部载入内存。

    那么512M可以装多少个32位整数呢?512M=512*1024K=512*1024*1024B=512*1024*1024*8b=4294967296b

    可存储32位整数:4294967296b/32b=134217728个,是1亿多个。

    3. 设计思路

    中位数需要遍历数据才能找出来,512M是我们可用的内存限制,每次只能载入1亿多个数据,100亿个数据,我们可以分成100次进行载入遍历。

    那么遍历的时候我们需要记录哪些信息呢,因为要求中位数,我们可以考虑将数据划分区间,计算每个区间我们的数据落进去的数目,就可以大致知道数据分布了。

    所以整体的数据区间是多少呢?一个有符号的32位整数,他的取值范围是:

    ,总共有4294967296个整数值,我们把它划成100000组,那么每组的数据是43000个,最后一组少点。

    所以第一个区间

    的取值范围是

    ,第二个区间

    的取值范围是

    ,以此类推。

    我们分一百次载入数据,每次载入1亿个,遍历这一亿个数据,数据落入哪个区间,则那个区间的统计值+1。100次载入完成之后,我们便得到了每个区间的统计值,我们用

    来代表数据落入

    区间的统计值。那么肯定有

    现在我们需要寻找中位数落入哪个区间,100亿个数据的话,中位数应该等于第50亿大和第50亿+1大的数据的平均。所以我们需要知道这两个数,落在哪个区间了。

    我们从

    开始累加,一直累加到

    使得总和大于50亿+1,(等于的情况比较特殊,这里假设不等于。)那么关系到中位数计算的两个数应当落在区间

    里。

    到这里我们可以得到中位数的区间,我们计算一下上面的过程所需内存情况:载入1亿个数据需要内存32*1亿/8/1024/1024=381.5M,100000个数据组的统计值需要内存8*100000/1024/1024=0.76M 总和小于512,是可行的。

    现在我们知道涉及中位数计算的两位数的区间是

    ,而

    里有43000个数据,在

    之前的区间中的数据总数为

    ,下面我们需要找到第50亿个以及第50亿+1这两个数到底是多少。

    我们需要再次遍历数据,对落在

    区间的数都加以关注,统计

    区间内数字

    出现的频词

    再次分100次载入数据,对落在

    区间的数进行关注,为

    区间内的每一个整数

    都设计一个统计值

    区间有43000个数据,所以有43000个统计量。

    全部载入完成之后,我们再在

    的基础上累加

    ,如果加上

    大于50亿了,那么第50亿大的数据就是

    ,第50亿+1大的数同理。这样我们就可以计算中位数了。

    再次对上面的过程进行内存分析,每次载入1亿个数据需要内存381.5M,43000个统计量需要内存肯定小于上面100000个统计量的情况,所以内存也是足够的。哦还有个

    需要内存,但是8位,不值一提。

    设计思路以上。

    4. 总结数据量过大,分次载入

    一共需要两次完全遍历数据。

    5. 类似题目

    大量数据寻找topK,

    解决思路:数据多次载入,进行堆排序,每次载入都获得堆的topK,最后将这些topK再进行排序。

    加油,一件事竟然决定去做了,就请做好他。耐住性子,慢慢来。

    展开全文
  • 大数据求中位数(插值计算

    千次阅读 2020-06-15 11:48:24
    常规(数据量不大的情况)求中位数和基于插值计算中位数方法 在学数学时我们学到过求中位数方法,在数据个数为偶数时找最中间的两个数然后求平均数如果数据个数为奇数时则只需找数据个数一半的那位上的数字...
  • python 计算数据中值的置信区间

    千次阅读 2020-12-08 14:25:03
    计算数据的中值95%的置信区间假设有一组数据如下:data = [-0.1, -2.4, -0.1, -0.7, -1.4, -0.9, -3.2, -0.2, -0.3, -0.6, -3.2, -5.5]求中值的置信区间与求数据的均值置信区间方法是类似的,在这里我不会讨论详细...
  • Excel中用什么函数可以算置信区间,怎么算啊?用excel求方差:---函数---统计-----VAR或VARPVAR分N减了1,估算样本方差。VARP分母N,计算样本总体差由于样到限制,一般n不大,一般用估算样本方差。当大面积的如学生...
  • SampleFits.java package org.eso.fits; import java.util.Arrays; public class SampleFits { /*本类完成的功能:对输入的的初始样本lamda, ... * 在例子,lambda和flux的长度应该从小到大有序而且一致,并
  • 对于未分组数据,可使用Excel的MEDIAN函数求解中位数。 对于分组数据,分为: 1. 组离散数据的中位数: 首先要构造累积频率分布表,然后通过累积频率分布表确定数据的中...看似非常简单的中位数计算,在使用了实际数
  • 空间统计之八:平均中心和中位数中心

    万次阅读 多人点赞 2015-08-17 15:33:23
    昨天讲了中心要素,因为中心要素是要从原来的要素去选择一个已有的,所以算出来的,与我们观念和感知的“中心”这个概念,还是差距很大,所以今天来讲讲这两种中心的计算方式和应用范围。   我们来看看三者...
  • 给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个。 (注意,计算置位代表二进制表示1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。) 示例 1: 输入: L...
  • 求总体均的95%置信区间,可根据自身需要更该alpha值,计算相应的置信区间 alpha<-0.05 #置信区间 n <- length(data) #计算变量长度 mean<- mean(data) #计算均值 Z1 <- qt(1-alpha/2,n-1) #计算...
  • 加权中位数这是算法导论9-2的习题大概意思是有一个无序集合,这个集合中的所有元素都带有有一个权重,权重之和为1。例如权重集合为w[]={0.1,0.35,0.05,0.1,0.15,0.05,0.2};元素集合为x[]={4,3,12,8,7,6,5.2}; 所谓...
  • 2.3.2次序统计量的分布续任给一个次序统计量 ,它的密度与总体有如下关系:证明法一:考虑 落入 这一事件,它等价于容量为 的样本有 个小于 ,有一个在区间 ,有 个大于或等于 ,这一共有 种分组的方法,且对于每个...
  • 深入浅出是课程的主要特点,整个课程都是通过简单的算术数字分布例子来讲述统计学概念,视频课程从均值、中位数、众数等简单的概论说起,灵活的运用抛硬币的事例深入浅出的讲述了一个个统计概念,开篇的讲述的如何教...
  • 区间中的最小数 * 区间所有的和 最后程序输出经过计算后的最大值即可,不需要输出具体的区间。如给定序列[6 2 1]则根据上述公式,可得到所有可以选定各个区间的计算值: [6] = 6 * 6 = 36; [2] = 2 * 2 = 4; ...
  • 【数值计算方法】学习笔记

    千次阅读 多人点赞 2020-11-11 23:39:59
    本篇文章主要记录了我在学习数值计算方法这门课的过程学习到的概念、公式、例题,以及用Python编写的相关算法代码,通过复盘来巩固所学知识。 文章目录前言一.误差1.误差的分类2.绝对误差与绝对误差限3.相对误差与...
  • Spark入门--求中位数

    万次阅读 2015-07-29 12:42:23
    中位数,数据是分布式存储的 将整体的数据分为K个桶,统计每个桶内的数据量,然后统计整个数据量 根据桶的数量和总的数据量,可以判断数
  • 求ip地址起止范围的计算方法

    千次阅读 2021-06-28 13:30:15
    计算具体事例:IP 192.168.1.1,子网 255.255.255.0,十进制255换做二进制就是1111 1111八个1,十进制192换成二进制是1100 0000。把IP和子网掩码全换成二进制,对比一下,IP:1100 0000 1010 1000 0000 0001 0000 ...
  • 统计学④——置信区间怎么算

    万次阅读 多人点赞 2019-07-18 09:14:10
    1、选择总体统计量 2、求出其抽样分布 3、决定置信水平 4、求出置信区间上下限 一般来说,只要知道抽样分布,就可以求出置信区间,比如均值抽样分布和比例抽样分布,就是经常需要求置信区间的。 二、均值求置信区间...
  • double f = 0.1232332; 1.BigDecimal BigDecimal bg = new BigDecimal(f); //获取小数点后面2位数 double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() 这是BigDecimal下的给定舍入的模式,上面...
  • 首先必须清楚中位数的定义: 中位数(又称中值,英语:Median),统计学中的专有名词,代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。对于有限的数集,可以通过把所有观察值...
  • 一、中位数 定义/解释:按顺序排列的一组数据中居于中间位置的数,即在这组数据中,有一半的数据比他大,有一半的数据比他小  #如果观察值有偶数个,通常取最中间的两个数值的平均数作为中位数。 二、方差...
  • 求多个有序数组的中位数

    万次阅读 2012-09-15 10:57:47
    题目:求解多个有序数组的中位数 题目的意思是如果多个有序数组...该题目可能有很多种实现方法,而我们给出一种仅依赖中位数性质的算法。如果存在一个已经排好序的大数组(有序数列),则会发现几个性质: 对
  • 统计学的P值如何计算

    千次阅读 2021-01-12 18:32:06
    下面有一个思路:假设:假设50%的人打分大于平均分,50%的人打分小于平均分(是的,明眼人已经看出来了,我用中位数替代了平均数)首先计算中位数在(1,2)区间的概率。你做了10次实验,大于这个区间的事件发生了7次,...
  • 如果你咨询专家,他们会告诉你,要预测房价中位数,收入中位数是个非常重要的属性。于是你希望确保在收入属性上,测试集能够代表整个数据集中各种不同类型的收入。 我们由上面直方图可以看到:大部分收入中位数值...
  • 在置信区间下置信值的计算 嗨,大家好, (Hi everyone,) In this article, I will attempt to explain how we can find a confidence interval by using Bootstrap Method. Statistics and Python knowledge are ...
  • 海量数据找中位数

    万次阅读 2011-11-14 14:11:30
    腾讯一面问到了,用的算法导论中的Kth算法,期望...只有2G内存的pc机,在一个存有10G个整数的文件,从中找到中位数,写一个算法。 http://blog.sina.com.cn/s/blog_4a8aac970100093j.html~type=v5_one&label=rela_nex
  • 流式数据的数学统计量计算

    千次阅读 2017-07-03 22:38:04
    基于滑动窗口的中位数计算解法和上面的问题类似,也需要构造一个最大堆和最小堆,同时也满足上面的两个条件,区别就在于我们每次计算完一次中位数之后,都需要从堆中删除一个最老的元素。可以通过和中位数比较来确定...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,989
精华内容 29,595
关键字:

区间中位数计算方法