Минимизировать функцию с фреймом данных Pandas - PullRequest
0 голосов
/ 30 апреля 2019

Я должен найти 2 входных значения, для которых выходное значение минимизировано:

import pandas as pd

def calc_func(x1, x2):
    var1 =  pd.DataFrame([x1]).loc[0]
    var2 =  pd.DataFrame([x2]).loc[0] 
    y = var1-var2
    return(y)

from scipy.optimize import minimize
x0 = [1,2,3]
res = minimize(calc_func,x0,x0, method='BFGS')

однако это дает мне следующую ошибку

ValueError: установка элемента массива с последовательностью.

Что можно объяснить тем фактом, что в расчетах с фреймами данных pandas вместо массивов используются отдельные числа ...

Каков наилучший способ минимизировать мою функцию?

Комментарии:

  • К сожалению, невозможно полностью удалить все вычисления панд из функции.

1 Ответ

1 голос
/ 30 апреля 2019

Функция minimize минимизирует функцию от R ^ n до R. Самое простое, что нужно сделать, это объединить x,y оба в один вектор z, а затем оптимизировать функцию относительно z , Работает следующий код:

import pandas as pd
from scipy.optimize import minimize
import numpy as np

def calc_func(x):
    return(x[0]-x[1])

x1 = [1,2,3]
x2 = [3,4,5]
v1 = pd.DataFrame([x1]).values[0]
v2 = pd.DataFrame([x2]).values[0]
x = np.array([v1,v2])
res = minimize(calc_func,x, method='BFGS')

Если вам действительно нужно оптимизировать функцию от R ^ n до R ^ m, тогда вам нужно использовать другой метод (который я не нашел, быстро просмотрев документы).

...