MATLAB最小二乘法加正则,如何在Scipy线性规划中添加正则化(非负最小二乘法)...

以下是我使用Scipy's NNLS的LP代码:import numpy as np

from numpy import array

from scipy.optimize import nnls

def by_nnls(A=None, B=None):

""" Linear programming by NNLS """

#print "NOF row = ", A.shape[0]

A = np.nan_to_num(A)

B = np.nan_to_num(B)

x, rnorm = nnls(A,B)

x = x / x.sum()

# print repr(x)

return x

B1 = array([ 22.133, 197.087, 84.344, 1.466, 3.974, 0.435,

8.291, 45.059, 5.755, 0.519, 0. , 30.272,

24.92 , 10.095])

A1 = array([[ 46.35, 80.58, 48.8 , 80.31, 489.01, 40.98,

29.98, 44.3 , 5882.96],

[ 2540.73, 49.53, 26.78, 30.49, 48.51, 20.88,

19.92, 21.05, 19.39],

[ 2540.73, 49.53, 26.78, 30.49, 48.51, 20.88,

19.92, 21.05, 19.39],

[ 30.95, 1482.24, 100.48, 35.98, 35.1 , 38.65,

31.57, 87.38, 33.39],

[ 30.95, 1482.24, 100.48, 35.98, 35.1 , 38.65,

31.57, 87.38, 33.39],

[ 30.95, 1482.24, 100.48, 35.98, 35.1 , 38.65,

31.57, 87.38, 33.39],

[ 15.99, 223.27, 655.79, 1978.2 , 18.21, 20.51,

19. , 16.19, 15.91],

[ 15.99, 223.27, 655.79, 1978.2 , 18.21, 20.51,

19. , 16.19, 15.91],

[ 16.49, 20.56, 19.08, 18.65, 4568.97, 20.7 ,

17.4 , 17.62, 25.51],

[ 33.84, 26.58, 18.69, 40.88, 19.17, 5247.84,

29.39, 25.55, 18.9 ],

[ 42.66, 83.59, 99.58, 52.11, 46.84, 64.93,

43.8 , 7610.12, 47.13],

[ 42.66, 83.59, 99.58, 52.11, 46.84, 64.93,

43.8 , 7610.12, 47.13],

[ 41.63, 204.32, 4170.37, 86.95, 49.92, 87.15,

51.88, 45.38, 42.89],

[ 81.34, 60.16, 357.92, 43.48, 36.92, 39.13,

1772.07, 68.43, 38.07]])

用法:

^{pr2}$

我的问题是如何在LP系统中加入regularization因子?

我愿意接受解决方案,而不是使用Scipy。在

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值