我试着找,但结果很差。在
有人能给我解释一下怎么表演吗优化.最小化在Pandas DataFrame上,DataFrame和result列中的类别之间的错误最小化
考虑这个例子:
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,我希望找到最小化该等式的值:
^{pr2}$我可以在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
以下是解算器为动物返回的值:
cat1 3.59194254
cat2 5.559980313
cat3 5.91078751
dog1 4.840109868
dog2 7.613201994
dog3 5.746396256
如何在Python中复制它?在
您需要定义一个
optimize.minimize
可以运行的函数(以便它知道它试图最小化什么)。在因此,让我们像您所描述的那样定义animal_error函数-第一个参数是一个1d数组,其中包含一些值(根据优化的需要)。第二个参数是这些数组值对应的字符串,第三个参数是数据帧。大多数代码只是将数据帧字符串转换为可以计算的值。在
^{pr2}$现在,可以将字符串组成数组:
^{3}$为解算器设置合理的初始值:
运行最小化程序:
最终结果如下:
我认为你的成本函数描述可能有点偏离,所以你可能需要调整一下。在
相关问题 更多 >
编程相关推荐