求助——数据处理问题

  大家好,本人算法菜鸟一枚,有个处理数据的问题想了好几天,也初步写了一点代码,总达不到理想的效果,希望高手们指点。


  背景与数据细节这里先略过(考虑到公司数据的保密性与表达的无必要性)。

  遇到的问题可以简单地归结到两个公式上面:

  1、K=
A1*Px

  2、K=
It+(1-Jt)*Kt-1

  公式中变量及要求说明:

  1、目前收集的数据是从1978年到2012年,计算时需要选定某一年为基年,然后以该基年的数据为起点开始往下计算某些属性值。如基年选定1978,则以1978年的数据为起点,一直计算到2012,同理,若基年为1995,则以1995年的数据为起点,一直计算到2012。

  2、上面提到以基年为起点能算到一些属性值,如A, I,易知这两个属性变量均为向量,元素个数为最新数据年份-基年+1,如基年为1995,则个数为2012-1995+1
= 18,It表示第t年的I值,t范围[1,18]。但还有些属性值需要通过两个不定因素的迭代计算得到,如K:K0和A1,P有关,这里的P为第一个不定因素,变化范围[4.0,5.5],亦是迭代的第一层。

  写过代码的朋友都清楚,这一层迭代只要一个for循环即可完成,这里给出Matlab代码,基年假定为1995。


1 for Px = 4.0:0.1:5.5
2 K(1,1) = A(1,1)*Px; % Matlab中(i,j)表示取矩阵或向量的第i行,第j列元素,这里的变量均为列向量
3 for t = 2:18 % 后面年份K值的计算
4 K(t,1) = I(t,1)+(1-J(t,1))*K(t-1,1);
    end
5 end

  若在Px这个迭代过程中加入最优解评判标准,则可知对于某一个基年,Px最优取值只有一个(假定评判时没有相同的最优结果),也可以说Px参数只针对基年,和后面年份无直接关系。如1995对应4.5,1998对应4.7,这个没有什么难处,也很好理解。


  问题就在于第二个不定因素:J。在计算最优解过程中,J参数和基年无关,但和后面年份相关且每年对应的J值均在范围[0.1,0.23]。

  说到这,本人的本能反应是在第一层迭代中加入J的多层迭代,如基年为2010,则还需加入2011,2012这两年的J值迭代过程。代码如下:


for Px = 4.0:0.1:5.5
K(1,1) = A(1,1)*Px; % Matlab中(i,j)表示取矩阵或向量的第i行,第j列元素,这里的变量均为列向量
for J1 = 0.1:0.001:0.23
for J2 = 0.1:0.001:0.23
J = [1,J1,J2]‘; % 符号‘表示行向量转为列向量,第一个元素无效,只做占位用,因为需从基年的下一年开始计算
for t = 2:3 % 后面年份K值的计算
K(t,1) = I(t,1)+(1-J(t,1))*K(t-1,1);
% 最优解评判过程在此处
end
end
end
end

  表面上看,问题解决了,至少在不管最优解能否满足实际需求的前提下。但是仔细一想,忽略了至关重要的一点——最新年份与基年的变动性。看下面列出的几种可能的情况就能知道问题所在:

  1、上述代码中的例子,基年为2010,最新年份为2012,则迭代嵌套为两层;

  2、最初提到的基年为1978,最新年份为2012,需35层;

  3、后面提到的基年1995,最新年份为2012,需18层;

  4、用户提供的数据也许最新年份为2013或2014等,同样,基年选择1999或2005等;面对这种最新年份与基年都不确定的情况,不定因素J的迭代过程该如何实现?

  本人的能力确实想不出好的方法,目前能做到的只是能确定迭代的次数,如最新年份为2015,基年选取为2000,则迭代嵌套为2015-2000
= 15层。

  提醒一点,确定了层数之后不管其大小如何,是可以实现,如30层就写30个for循环。随着最新年份与基年的变动,层数也跟着变,但是怎么让实现过程也相应地等价层数呢?

  换句话说,上面的疑问即是:

  1、若层数为2,则为两个for循环;

  2、若层数为10,则对应十个for循环;

  3、但是数据的最新年份由统计时间或要求决定,基年选择也不能事先确定,怎么做到:根据用户的数据与基年的选择情况,实现相应的J迭代?

  

求助——数据处理问题,布布扣,bubuko.com

时间: 2024-10-12 18:28:48

求助——数据处理问题的相关文章

海量数据处理技术学习

海量数据处理的常用技术可分为: 外排序:因为海量数据无法全部装入内存,所以数据的大部分存入磁盘中,小部分在排序需要时存入内存. MapReduce:分布式处理技术 hash技术:以Bloom filter技术为代表 外排序:主要适用于大数据的排序.去重. 分布式处理技术:MapReduce 技术思想是将数据交给不同的机器去处理,将数据切分,之后结果归约. 举例,统计出一批数据的TOP N 首先可以根据数据值或者数据HASH(MD5)后的值将数据按照范围划分,不同的服务器负责处理各种的数值范围,实

Android中实现图片点击跳转,菜鸟在线等 急求助

============问题描述============ 我想做一个点击图片然后跳转到其他界面的效果, 也就是实现图片点击事件  但是我不知道怎么监听点击事件 求助 ============解决方案1============ ImageView给个attr: android:id="@+id/image" android:clickable="true" 然后Activity实现View.OnClickListener接口,并实现onClick()方法,然后根据id

Jquery调用从ashx文件返回的jsonp格式的数据处理实例

开发环境:vs2010+jquery-1.4.min.js 解决问题:网上代码比较少,好多调试不通,返回数据不用json而用jsonp主要考虑解决跨域问题 开发步骤:打开VS2010,新建一web站点,保存位置选择D:\Website1;添加新项,选择一般处理程序,命名cmdHandler.ashx;添加新项,选择HTML页,命名为testAshx.htm;网上下载jquery-1.4.min.js拷贝到web站点中 项目相关网站源码和运行截图如下: 1.testAshx.htm代码如下: <!

Pandas日期数据处理:如何按日期筛选、显示及统计数据

前言 pandas有着强大的日期数据处理功能,本期我们来了解下pandas处理日期数据的一些基本功能,主要包括以下三个方面: 按日期筛选数据 按日期显示数据 按日期统计数据 运行环境为 windows系统,64位,python3.5. 1 读取并整理数据 首先引入pandas库 import pandas as pd 从csv文件中读取数据 df = pd.read_csv('date.csv', header=None) print(df.head(2)) 0 1 0 2013-10-24 3

实时计算,流数据处理系统简介与简单分析

转自:http://www.csdn.net/article/2014-06-12/2820196-Storm 摘要:实时计算一般都是针对海量数据进行的,一般要求为秒级.实时计算主要分为两块:数据的实时入库.数据的实时计算.今天这篇文章详细介绍了实时计算,流数据处理系统简介与简单分析. 编者按:互联网领域的实时计算一般都是针对海量数据进行的,除了像非实时计算的需求(如计算结果准确)以外,实时计算最重要的一个需求是能够实时响应计算结果,一般要求为秒级.实时计算的今天,业界都没有一个准确的定义,什么

开源大数据处理系统/工具大全

本文一共分为上下两部分.我们将针对大数据开源工具不同的用处来进行分类,并且附上了官网和部分下载链接,希望能给做大数据的朋友做个参考.下面是第一部分. 查询引擎 一.Phoenix 贡献者::Salesforce 简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的JDBC驱动. Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的J

数据分析师之Excel数据处理与分析实战

Excel数据处理与分析实战 课程学习地址:http://www.xuetuwuyou.com/course/191 课程出自学途无忧网:http://www.xuetuwuyou.com 课程简介 本门课程详细介绍了 Microsoft Excel 的应用知识,Excel也称为电子表格,是Microsoft office 套装软件的一个重要组成部分.利用它可以进行各种数据的混合运算外,还可以应用于财务会计.统计分析.证券管理.决策管理以及市场营销等众多领域.正因为它具有如此广泛的应用,所以才得

android网页分享到朋友圈问题求助?

目前想要实现通过QQ将网页分享到微信好友或朋友圈,看见有些APP是直接分享出去左下角图标显示的是QQ.求助各位大牛提供下思路. 这种功能是怎么实现的.应该不是通过android的系统分享实现的吧?.查了几天的资料仍然没有思路,求助各位大牛 这种功能是怎么实现的.应该不是通过android的系统分享实现的吧?.查了几天的资料仍然没有思路,求助各位大牛 这种功能是怎么实现的.应该不是通过android的系统分享实现的吧?.查了几天的资料仍然没有思路,求助各位大牛 这种功能是怎么实现的.应该不是通过a

Python爬虫数据处理

一.首先理解下面几个函数 设置变量 length()函数 char_length() replace() 函数 max() 函数1.1.设置变量 set @变量名=值 set @address='中国-山东省-聊城市-莘县'; select @address 1.2 .length()函数 char_length()函数区别 select length('a') ,char_length('a') ,length('中') ,char_length('中') 1.3. replace() 函数