首页 > 解决方案 > scipy.optimize.nnls 的多重解决方案

问题描述

scipy.optimize.nnls用来计算系数总和为 1 的非负最小二乘拟合。当我运行计算时,我总是得到相同的解决方案。这是我正在使用的代码:

#! /usr/bin/env python3
import numpy as np
import scipy.optimize as soptimize

if __name__ == '__main__':

    C = np.array([[112.771820, 174.429720, 312.175750, 97.348620],
                  [112.857010, 174.208300, 312.185270, 93.467580],
                  [114.897210, 175.661850, 314.275100, 99.015480]
                 ]);

    d = np.array([[112.7718, 174.4297, 312.1758, 97.3486],
                  [112.7718, 174.4297, 312.1758, 97.3486]]);

    for line in d:
        ret , _= soptimize.nnls(C.T, line)
        print(ret)

每次我得到:

[9.99992794e-01 7.27824399e-06 0.00000000e+00]
[9.99992794e-01 7.27824399e-06 0.00000000e+00]

我需要计算具有公差范围的多个解决方案,并选择最适合我需要的解决方案。有谁知道如何为相同的输入矩阵获得不同的解决方案?

标签: pythonpython-3.xscipyleast-squares

解决方案


推荐阅读