分享

项目组hadoop实战之归一化:每天更新中。。。

Hedera 发表于 2015-1-30 14:20:20 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 18 37082
本帖最后由 Hedera 于 2015-1-30 18:24 编辑

背景简介:
最近团队在做一个大数据处理。

我的任务:
数据的归一化

具体任务:
将文本里面每行的第一字段转化成为0到1之间的数字。

例如文本为:
0 number1 w beijing
11 number2 w beijing
6 number3 m shanghai
41 number4 w guangdong
98 number5 w fujian
31 number6 m beijing
100 number7 m chongqin

则可知最大值max=100,最小值min=0
使用归一化的公式为:(x-min)/(max-min)
则需要输出:
0 number1 w beijing                         //(0-min)/(max-min)=(0-0)/(100-0)=0
0.11 number2 w beijing                    //(11-min)/(max-min)=(11-0)/(100-0)=0.11
0.06 number3 m shanghai                //(6-min)/(max-min)=(6-0)/(100-0)=0.06
0.41 number4 w guangdong
0.98 number5 w fujian
0.31 number6 m beijing
1 number7 m chongqin






已有(18)人评论

跳转到指定楼层
Hedera 发表于 2015-1-30 14:36:02
回复

使用道具 举报

pig2 发表于 2015-1-30 14:41:26
只是1-100之间的数据,还是任意数字
回复

使用道具 举报

Hedera 发表于 2015-1-30 14:44:18
pig2 发表于 2015-1-30 14:41
只是1-100之间的数据,还是任意数字

任意数字。所以想先找出最大最小值,然后再进行归一化
回复

使用道具 举报

595460482@qq.co 发表于 2015-1-30 14:58:59
分两步:第一步MR输出或者缓存max 第二步只用M即可归一 个人愚见
回复

使用道具 举报

pig2 发表于 2015-1-30 15:42:40
本帖最后由 pig2 于 2015-1-30 15:45 编辑

我说一下思路,你来实现下
比如
这个数字是一位,那么就是除以10,
这个数字是两位,那么就是除以100,
这个数字是三位,那么就是除以1000,
这个数字是四位,那么就是除以10000,
这样始终是小于1的。
并且无论这个数字有多大,都不影响
举例:
key=2,将2转换为字符串,它的长度为1
在被除数(字符串)b=1+0
然后将被除数转换整型即为10
,这样两个整数在相除即可

也就是被除数是这样的
stirng b=b+len(key)个0

对于len(key)个0,可以使用循环。
上面应该明白的差不多:
字符串b,根据key的长度来组合被除数1+Len个零
然后转换整形b


最后
key/(int)b=0.x了
这样就达到了效果










回复

使用道具 举报

pig2 发表于 2015-1-30 15:51:53


伪代码如下:
int key=x;
int b=y;

int len=b.length();
string strB="";
for(int i=0;i<len;i++)
{
    strB=strB+"0";
}

string z=b.toString()+strB.trim();

int m=converttoInt(z)

b=m;

int result=key/b;



result即为我们想要的结果




回复

使用道具 举报

Hedera 发表于 2015-1-30 16:23:53
回复

使用道具 举报

s060403072 发表于 2015-1-30 17:11:12
Hedera 发表于 2015-1-30 16:23
归一化的目的是想将原来的整数转化成小数,但还是要保持原来数与数之间的比例(因为最终要将这些数据提交 ...

你的需求需要说的详细些,人家的方法已经说的很明白了,即使不一样,你根据这个改改就可以了。

回复

使用道具 举报

s060403072 发表于 2015-1-30 17:14:53
Hedera 发表于 2015-1-30 16:23
归一化的目的是想将原来的整数转化成小数,但还是要保持原来数与数之间的比例(因为最终要将这些数据提交 ...

比例是存在的,你的比例如果固定的话,也是说不过去的,因为不同的数字,除以不同的整数得到的结果肯定有大于1的,
而对于版主的方法,确实是按照一定比例的,比如
10倍
100倍
。。。依次往下。
楼主你的比例是固定的????
说的需要清楚,别人才能帮助你。
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条