- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 scipy 执行非负最小二乘法。一个简单的例子如下:
import numpy as np
from scipy.optimize import nnls
A = np.array([[60, 70, 120, 60],[60, 90, 120, 70]], dtype='float32')
b = np.array([6, 5])
x, res = nnls(A, b)
现在,我遇到的情况是 A
或 b
中的某些条目可能会丢失 (np.NaN
)。比如,
A_2 = A.copy()
A_2[0,2] = np.NaN
当然,在 A_2、b 上运行 NNLS 将不起作用,因为 scipy 不需要 inf
或 nan
。
我们如何执行 NNLS,从计算中屏蔽掉丢失的条目。实际上,这应该转化为
Minimize |(A_2.x- b)[mask]|
其中掩码可以定义为:
mask = ~np.isnan(A_2)
一般来说,A
和 b
中都可能缺少条目。
可能有帮助:
[1] How to include constraint to Scipy NNLS function solution so that it sums to 1
最佳答案
我认为您可以先计算掩码(确定要包含哪些点),然后执行 NNLS。给定面具
In []: mask
Out[]:
array([[ True, True, False, True],
[ True, True, True, True]], dtype=bool)
您可以通过沿第一个轴使用 np.all
检查列中的所有值是否为 True
来验证是否包含点。
In []: np.all(mask, axis=0)
Out[]: array([ True, True, False, True], dtype=bool)
然后可以将其用作 A
的列掩码。
In []: nnls(A_2[:,np.all(mask, axis=0)], b)
Out[]: (array([ 0.09166667, 0. , 0. ]), 0.7071067811865482)
同样的想法可以用于b
来构造行掩码。
关于python - 使用掩码的 Scipy NNLS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42923858/
我正在使用 scipy 执行非负最小二乘法。一个简单的例子如下: import numpy as np from scipy.optimize import nnls A = np.array([[6
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 2年前关闭。 Improve thi
我正在使用 R interface to the Lawson-Hanson NNLS非负线性最小二乘算法的实现,该算法求解 ||A x - b||^2,约束是向量 x ≥ 0 的所有元素。这工作正常
我有以下代码来求解非负最小二乘法。使用scipy.nnls. import numpy as np from scipy.optimize import nnls A = np.array([[60,
首先,我将重述问题:使用 python docs 将 Python 嵌入到 C/C++ 应用程序时和其他资源。我发现您可以使用 导入模块 PyObject *pName = PyUnicode_Fro
我是一名优秀的程序员,十分优秀!