不確定如何繼續。我有一個數字列表(精確數字列表),但這些數字有一個模糊性: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',但我寫了一個可以工作的解決方案。 –