听说水区大佬多~ 求个公式(已解决)
- magicsongs谢谢36楼大佬~谢谢chh 已经解决了
需求是这样的~ 我大概有7万个对象,每个都有个分数。分值从-500到2000 。
现在想要把分数全部缩放到0-1之间,但是又不想直接根据最大值最小值缩放~
因为实际情况是中间分数段的最多,现在却想要更多的对象的值靠近0和1,且最终结果0-0.5 0.5-1区间的对象数量差不多
为了方便理解我画了两个示意图~
现在的样子
希望之后的样子
数学比较差~求大佬指点~ 越通俗越好。 - 澳洲麋鹿这个帮不了,等高手
- wm258156031问题的每个字我都认识,标记等个大佬
- women需求没看懂
- sellfur不懂,帮顶。。。,
话说一开始看到七万个对象,想歪了有点 - Megalodon“7万个对象”
我只要一个就够了~ - magicsongs就是有一堆分数 其中中间段的比较多。现在想要高分和低分的变多一些。
- yanjh1表示实在看不懂,等大佬解释
- Selwyn_Lu70000个对象,受得了么,榨汁机啊
- magicsongs楼咋这么容易偏
- suckbunny你得有个标准吧,既然中间段最多,那么中间段要么倾向1要么倾向0,不然挺矛盾的。如果只是单纯的要把数据接近1,那么大于750的(2000-x)/1250,小于等于750的(500+x)/1250.
- 酸菠萝看不懂,帮求大佬
- magicsongs是要把中间分数段的都往两头放 所以不能直接取中间值来计算 不然低于中间值的就全部靠向0了 高于中间值的都靠近1了 。最终结果还是希望靠近0-0.5 0.5-1区间的对象数量差不多
- sclkow感觉我理解的题干和楼主的需求不同...
- timtu哇,人在世界上有7W个可以对象的人。
- rulers学渣路过 看不懂
- magicsongs就是想要把一个凸的曲线变成一个凹曲线 ,本来最高点在中间偏左和偏右 现在最高点在两头 且最低点在刚好中间
- shuhanks需求是增大离散度,然后再缩放到0-1之间,最简单的方法是取log自然对数以后再缩放
- 国产008需求看着费劲
- conzz7万个对象,颜值从-500到2000 。
不好意我看歪了 - suckbunny那我说的不是可以么?我的就是中间段是1往两头走越接近0。
- magicsongs语文也比较差~ 加了两个示意图 您看看
- magicsongs能稍微通俗一点么~ 我不知道啥是自然对数呀
- 我来了看不懂,等大佬解释。。
- mwb1028完了 题干都看不懂
- suckbunny看了你编辑过的,那就很简单啊,小于等于500的(500-x)/1000,大于500的(x-500)/1500
- shuhanks你准备用什么工具来处理?excel里面的话就=ln(number)就行了,另外一群歪楼的都加分,不给我加分吗
- magicsongs我下午试试~ 不过我咋觉得好像这么算出来凹点不会在500 ~ 我的500是分值 凹的曲线是对象数量
- a13923970k的数据还好,excel就能处理,先average这70k数值,然后定标这个平均值为0.5,(最终结果0-0.5 0.5-1区间的对象数量差不多)这个要求就能满足了。
而(现在却想要更多的对象的值靠近0和1),这个我就不能理解了~
先午饭,待会再看楼主需求,楼主要多表述啊~~ - magicsongsoracle~ 写个定时任务
- magicsongs图的曲线是对象数量 原本是分布在中间偏左~ 现在想要往两头偏。比如原来abcd b最多 现在想要a 和d最多 且尽可能对称
- shadow_LJ现有的维度(也就是你说的分数)做不到,因为按你现有的维度你的数据分布就是两边低中间高,所以不管你比例怎么变化(-500到2000或者0到1)分布曲线都是不变的。
建议重新造个维度和现在的维度相反(比如之前的分数是漂亮值,现在造个叫丑恶值),这样按新维度的分布曲线就是两边高中间低了。 - suckbunny没理解错的话,应该是比如400分的有22000人,然后变成0.01分的时候有22000人,600分的有23000人,然后变成0.99分的有23000人对吧?是的话就小于500分的(x/2-250)^2/500000;大于500的(x/2-250)^2/1125000.之前回复的公式不对
- shuhanksMySQL的话一样的,ln一下就好了,如果要求回归到中线,再调一下就行了
- alredstone值里面有负数,如何直接取对数
我没能理解lz的要求,“最终结果0-0.5 0.5-1区间的对象数量差不多”这个,如果原始数据分布不是标准正态分布或接近正态分布,不影响原分布趋势的前提下是没法实现的。如果原始数据符合正态分布,就非常简单了。不懂取对数也没关系,数值分布-500 — 2000,变换至0~1: 1-(x+500)/2000。 - kgzengx=(a+500)/2500
y=(2(x-0.5))^(1/3)/2+0.5
先挪到[0,1]区间,再用幂函数解决,1/n取奇数,可大可小。 - ohyoyo帮顶,等答案,感觉高大上
- magicsongs我绘制了下图~ 没问题。。公示没问题~ 我现在在想咋让数据库算^(1/3).。。
- neil_aug取数量最大值max,|max-x|
- magicsongs大佬~ 遇到个问题
一个负数的a 加上最小值的绝对值后再除以最大值加最小值的绝对之后 数值会在0-0.5 ~ 那么再第二步运算的时候 x-0.5 得到的就是负数了~ 我负数咋^(1/3)呀?
比如-1 +abs(-2763) = 2762
abs(-2763)+4687 = 7450
2763/7450=0.37087248
减去0.5后就是负数了~ 就算*2 之后也不能^呀~ - 布衣7W个对象要多好的体力啊。。
- suckbunny负数可以开立方根
- suckbunny人家只是妈妈桑,要统计好数据发给客户挑选的嘛
- magicsongs这里要1/3 我试了下不行~
- kgzeng不太清楚编程这块的问题,我在网上找了几个函数绘制图像,负数第三象限的图是画不出来。
但从数学上是不存在这个问题的。负数确实可以开立方根。(-0.125)^(1/3)=-0.5 - kgzeng见图。exe
- magicsongs谢谢啦~ 那我得研究下 或者所说这里的0.5的意义是什么 能换成别的值么?
- suckbunny那就试试我的行不行。
- magicsongs数据库和软件的问题~ 负数都不给开立方~ 不知道别人是咋解决的
- kgzeng0.5的意义是平移坐标轴,幂函数x*(1/3)是关于(0,0)对称,你这个要求是关于(0.5,0.5)对称并且函数过(0,0),(1,1)
所以y=(2(x-0.5))^(1/3)/2+0.5的目的就是平移并且缩小x、y范围