0

如果我提前措辞错误,我很抱歉,但我有一个大数据集,我正在尝试分析它,但大多数数据不正确,需要一些帮助来弄清楚如何选择正确的数据。

这里有一些更多的信息来清除它。例如,我有以下内容:

color  value   quantity
red       20    2
blue    5   8
green   10  2

total       100

如果只给出值和总数,我会发现有 36 个可能的答案:

#1 Found : 20.0*0.0 red + 5.0*0.0 blue + 10.0*10.0 green = 100.0
#2 Found : 20.0*0.0 red + 5.0*2.0 blue + 10.0*9.0 green = 100.0
#3 Found : 20.0*0.0 red + 5.0*4.0 blue + 10.0*8.0 green = 100.0
#4 Found : 20.0*0.0 red + 5.0*6.0 blue + 10.0*7.0 green = 100.0
#5 Found : 20.0*0.0 red + 5.0*8.0 blue + 10.0*6.0 green = 100.0
#6 Found : 20.0*0.0 red + 5.0*10.0 blue + 10.0*5.0 green = 100.0
#7 Found : 20.0*0.0 red + 5.0*12.0 blue + 10.0*4.0 green = 100.0
#8 Found : 20.0*0.0 red + 5.0*14.0 blue + 10.0*3.0 green = 100.0
#9 Found : 20.0*0.0 red + 5.0*16.0 blue + 10.0*2.0 green = 100.0
#10 Found : 20.0*0.0 red + 5.0*18.0 blue + 10.0*1.0 green = 100.0
#11 Found : 20.0*0.0 red + 5.0*20.0 blue + 10.0*0.0 green = 100.0
#12 Found : 20.0*1.0 red + 5.0*0.0 blue + 10.0*8.0 green = 100.0
#13 Found : 20.0*1.0 red + 5.0*2.0 blue + 10.0*7.0 green = 100.0
#14 Found : 20.0*1.0 red + 5.0*4.0 blue + 10.0*6.0 green = 100.0
#15 Found : 20.0*1.0 red + 5.0*6.0 blue + 10.0*5.0 green = 100.0
#16 Found : 20.0*1.0 red + 5.0*8.0 blue + 10.0*4.0 green = 100.0
#17 Found : 20.0*1.0 red + 5.0*10.0 blue + 10.0*3.0 green = 100.0
#18 Found : 20.0*1.0 red + 5.0*12.0 blue + 10.0*2.0 green = 100.0
#19 Found : 20.0*1.0 red + 5.0*14.0 blue + 10.0*1.0 green = 100.0
#20 Found : 20.0*1.0 red + 5.0*16.0 blue + 10.0*0.0 green = 100.0
#21 Found : 20.0*2.0 red + 5.0*0.0 blue + 10.0*6.0 green = 100.0
#22 Found : 20.0*2.0 red + 5.0*2.0 blue + 10.0*5.0 green = 100.0
#23 Found : 20.0*2.0 red + 5.0*4.0 blue + 10.0*4.0 green = 100.0
#24 Found : 20.0*2.0 red + 5.0*6.0 blue + 10.0*3.0 green = 100.0
#25 Found : 20.0*2.0 red + 5.0*8.0 blue + 10.0*2.0 green = 100.0
#26 Found : 20.0*2.0 red + 5.0*10.0 blue + 10.0*1.0 green = 100.0
#27 Found : 20.0*2.0 red + 5.0*12.0 blue + 10.0*0.0 green = 100.0
#28 Found : 20.0*3.0 red + 5.0*0.0 blue + 10.0*4.0 green = 100.0
#29 Found : 20.0*3.0 red + 5.0*2.0 blue + 10.0*3.0 green = 100.0
#30 Found : 20.0*3.0 red + 5.0*4.0 blue + 10.0*2.0 green = 100.0
#31 Found : 20.0*3.0 red + 5.0*6.0 blue + 10.0*1.0 green = 100.0
#32 Found : 20.0*3.0 red + 5.0*8.0 blue + 10.0*0.0 green = 100.0
#33 Found : 20.0*4.0 red + 5.0*0.0 blue + 10.0*2.0 green = 100.0
#34 Found : 20.0*4.0 red + 5.0*2.0 blue + 10.0*1.0 green = 100.0
#35 Found : 20.0*4.0 red + 5.0*4.0 blue + 10.0*0.0 green = 100.0
#36 Found : 20.0*5.0 red + 5.0*0.0 blue + 10.0*0.0 green = 100.0

如您所见,在可能的情况下,我得到了正确答案,但也有许多其他答案。现在假设我再添加一个红色(所以总红色为 3),那么我现在有 49 个结果,但是如果您考虑与第一个结果集的关系,则第二组中的一些结果不太可能。我假设当我获得更多数据结果时,我可以更准确地删除不起作用的结果。

我试图弄清楚是否有任何研究或标准方法可以将结果缩小到更有意义的范围内。我不是 100% 确定,但我认为谷歌可能是一个例子,因为每个查询不仅针对数据运行,而且还针对您的历史记录(我有一个排名非常低的网站,当我点击它然后搜索再次,它总是出现在顶部..但是当我在我朋友的计算机上搜索时,相同的站点显示在底部)。我想也许谷歌与我们的多个搜索查询建立关系的方式,我可以使用类似的方法从我上面的数据中删除不正确的结果。

很抱歉对于这个误会。我对算法有点陌生,我无法解释这一点。如果这没有意义,请告诉我。

提前致谢!

4

2 回答 2

2

如果我做对了,您可以解决像这样的方程式

R*r + G*g + B*b = 100

对于给定的 R、G、B 整数值,并且约束 r、g、b 也是整数值。

由于您只有一个方程和 3 个变量,因此您得到了一个解空间而不是单个解,现在想要应用一些算法来选择正确或最佳的

您似乎也有 r0、g0、b0 的值,它们可能是 r、g 和 b 的值?!

您需要提出的是一个适应度函数,它可以告诉您候选解决方案的好坏。

一个例子可能是(较低的值意味着更好的解决方案)

(r-r0)^2 +(g-g0)^2 +(b-b0)^2 

这基本上说,当解决方案更接近可能的值时,它会更好。

一个变体可能是

(r-r0)^2 +(g-g0)^2 +(b-b0)^2 + c*C

其中 C 是您选择的常数,c 是与您可能的解决方案不同的值的数量。与一个改变两个或三个值的候选人相比,这将为只改变一个值的候选人提供更高的适应度。

一旦你有了适应度函数,选择适应度最低的解决方案。

于 2011-06-07T05:08:19.227 回答
0

该问题称为线性丢番图方程。您可以在此处找到更多信息。

于 2011-06-07T11:01:16.433 回答