微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在数据框中使用cvxpy找到两个变量的最佳值?

如何解决如何在数据框中使用cvxpy找到两个变量的最佳值?

希望你能帮助我,我几个月来一直在努力解决这个问题,

我有一个如下形式的数据框:

import pandas as pd 
  
# initialize list of lists 
data = [['A','XYD',12.2],['A','HMP',11.2],'LKA',13.8],['B',14.7],12],16.2],['C',11],15.3]] 
  
# Create the pandas DataFrame 
df = pd.DataFrame(data,columns = ['Name','Portofilo','Price']) 
df

    Name    Portofilo   Price
0   A       XYD          12.2
1   A       HMP         11.2
2   A       LKA         13.8
3   B       XYD         14.7
4   B       HMP         12.0
5   B       LKA         16.2
6   C       HMP         11.0
7   C       LKA         15.3

知道我想在我的第二个表中找到 A、B、C 的值(逗号后的两位数)和 XYD、HMP、LKA 的值

我需要这样:

    Name    XYD     HMP     LKA
0   A       12.2    11.2    13.8
1   B       14.7    12.0    16.2
2   C       NaN     11.0    15.3

基于此规则:

objective = cp.Minimize (cp.sum_squares ((T - TG * (1-r)))) 所以 我的 T 是我的价格: r 是我每列唯一的 XYD、HMP、LKA 值 TG 是每行 A、B、C 的唯一值

如果我这样做:

A * (1-XYD) = 12.2
A * (1-HMP) = 11.2
A * (1-HMP) = 13.8

B * (1-XYD) = 14.7
B * (1-HMP) = 12.0
B * (1-HMP) = 16.2

C * (1-HMP) = 11.0
C * (1-HMP) = 15.3

如何找到这两个变量的最优值?我只尝试了一个变量,但有两个变量,我有 DCPError

我试过了:

import cvxpy as cp
Tar = np.unique(df['Name'])
for seg in Tar:

        T = np.array(df['Price'])
        r = cp.Variable(3)
        TG = cp.Variable(1)
        R = (1 - r)
        objective = cp.Minimize( cp.sum_squares( (T - TG * R) ))
        contraints = [ r >= 0,TG>= 0]
        problem = cp.Problem( objective,contraints)
        problem.solve()
        Remise = np.around( r.value,2 )

但是没有用,

感谢您的帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。