我试图搜索它,但结果不佳。
有人能否请解释一下如何在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'])
我可以使用Excel中的Solver进行复制。
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中复制这个操作?
(r - xy)/r
,而成本函数的理想值为0,因此我认为(r - x0*x0)/r = 0
(x0 = sqrt(r)
) 是一个很好的起点。老实说,问10个人,可能会得到10个不同的答案。 - CJR