2017-12-14 20 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