不确定如何继续。我有一个数字列表(精确数字列表),但这些数字有一个模糊性:x,x + 1和x-1对我来说是完全一样的。但是,我想通过更改元素来最小化列表的差异。这是我认为到目前为止(带我知道这是行不通的样本名单):最小化方差python
import numpy as np
from scipy import stats
lst = [0.474, 0.122, 0.0867, 0.896, 0.979]
def min_var(lst):
mode = np.mean(lst)
var = np.var(lst)
result = []
for item in list(lst):
if item < mean: # not sure this is a good test
new_item = item + 1
elif item > mean:
new_item = item - 1
else:
new_item = item
new_list = [new_item if x==item else x for x in lst]
new_var = np.var(new_list)
if new_var < var:
var = new_var
lst = new_list
return lst
什么功能的作用是增加1到3元。但是,当您从第4个和第5个减去1时,会出现最小差异。发生这种情况是因为我在每个项目之后最小化了方差,而不允许进行多项更改。我怎么能实现多个变化,最好是不看所有可能的解决方案(3 **如果我没有弄错)? 非常感谢
你基本上要尽量减少'VAR((X +增量)%1)',其中X是你的一系列价值观。尝试使用像scipy.optimize这样的数值求解器。最后,您希望数字的最佳范围是从“delta”到“delta + 1”,您可以添加和删除数字中的整数,以确保它们都在该范围内。 –
我错在使用'scipy.optimize',但我写了一个可以工作的解决方案。 –