これを進める方法がわかりません。私は数字のリスト(正確な数字のリスト)を持っていますが、これらの数字にはあいまいさがあります.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を追加することです。ただし、最小分散は、4と5から1を引いたときに発生します。これは、各項目の後の分散を最小限に抑え、複数の変更を許可しないために発生します。どのように私は複数の変更を実装することができます(可能であればすべての解決策を見ることなく)(3 ** n私は間違っていない場合)? ありがとうございました
あなたは基本的に 'VAR最小限にしたい((X +デルタ)%1)' Xあなたの値の配列です。 'scipy.optimize'にある数値ソルバーを使ってみてください。最終的には、数値を入力する最適な範囲は 'delta'から' delta + 1'までであり、数値から整数を追加したり削除したりして、その範囲内にあることを確認できます。 –
'scipy.optimize'を使うのは間違っていましたが、私はうまくいきます。 –