【发布时间】:2019-03-21 03:24:22
【问题描述】:
我试图搜索它,但结果很差。
有人可以向我解释一下如何在 Pandas DataFrame 上执行 optimize.minimize,因此最小化的是 DataFrame 中的类别和结果列之间的错误
考虑这个例子:
import pandas as pd
df = pd.DataFrame({'prod': ['prod1', 'prod2', 'prod3', 'prod4', 'prod5', 'prod6'],
'cat': ['cat1', 'cat1', 'cat2', 'cat2', 'cat3', 'cat1'],
'dog': ['dog1', 'dog2', 'dog1', 'dog2', 'dog2', 'dog3'],
'result': [20, 10, 30, 50, 45, 120]})
对于每个 cat1、cat2、cat3、dog1、dog2 和 dog3,我想找到最小化这个等式的值:
import numpy as np
np.average(np.abs(df['result'] - ('min for values in cat column * min for values in dog column'))) / np.average(df['result'])
我可以使用 Solver 在 Excel 中复制它
prod cat dog result cat*dog abs
prod1 cat1 dog1 20 17.38 2.61
prod2 cat1 dog2 10 27.34 17.35
prod3 cat2 dog1 30 26.91 3.09
prod4 cat2 dog2 50 42.32 7.67
prod5 cat3 dog2 45 45.00 0.00
prod6 cat1 dog3 120 20.64 99.36
所以我想要找到的最终分数是:
平均腹肌 22 / 平均成绩 45.83 = 0.47
这些是 Solver 为动物返回的值:
cat1 3.59194254
cat2 5.559980313
cat3 5.91078751
dog1 4.840109868
dog2 7.613201994
dog3 5.746396256
如何在 Python 中复制它?
【问题讨论】:
标签: python pandas optimization scipy solver