2017-12-14 11 views
1

scipy.optimizeを使用してこの機能を最小限に抑えることはできますか?scipy.optimize.minimizeの関数の一部としてフィットMLモデルを使用できますか?

def obj(x): 
    Budget = ((df['CPP TA 30']/30 * df['TVC']) * x).sum() 
    x = (x - min_train_x)/(max_train_x-min_train_x) 
    x = np.array([x]) 
    return (0.05 * model.predict(x) - (1.7 * (Budget/10**10)))[0][0] 
x0 = np.random.uniform(size = 23) 
x0 = (x0/np.sum(x0)) * 1800 
from scipy.optimize import minimize 
res = minimize(obj, x0) 

答えて

0

間違いなく可能です。なぜ試してみませんか?

モデルが滑らかである(リニアネットワークやニューラルネットワークなど)場合、最適化はうまく収束します。唯一の問題は、非線形モデルでは複数のローカル最適値が存在する可能性があるため、異なる開始点を試したり、あるヒューリスティックで初期化することは安全です。

モデルがスムーズでない場合(例:木のアンサンブル)、収束に問題があり、Nelder-Meadのような勾配のないアルゴリズムを使用する必要があります。

+0

あなたの答えをありがとう!これは確かにニューラルネットワークモデルです。私が持っている問題は、最小化が最初にx0を返すということです。 x0は無作為に初期化されるため、問題は他のものでなければなりません。 – dark980

+1

最小の実例を表示できますか? –

+0

最小限の作業例ではどういう意味ですか?私は説明のようなコードを書いて、最適化されたxはx0と同じです。 – dark980

関連する問題