scipyを使用して非負最小二乗を実行しています。次のように簡単な例は次のようになります。マスクを使用したScipy NNLS
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
)を持っています。何かのように、scipyのダウンロードはinf
かnan
期待していないよう
A_2 = A.copy()
A_2[0,2] = np.NaN
は勿論、A_2にNNLSを実行している、bは動作しません。
計算から欠落したエントリを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
ありがとうございます。これは完璧です! –