이 함수의 작동 방식을 이해하는 데 어려움이 있습니다. IRLS로 scipy의 최소 제곱 함수 이해
a, b = scipy.linalg.lstsq(X, w*signal)[0]
는 그 신호가 신호를 나타내는 배열을 알고 현재
w
내가
X
또는
w
이 가중 최소 제곱을 모방하거나 반복적으로 최소 제곱 reweighted 조작하는 방법 단지
[1,1,1,1,1...]
입니까?
이 함수의 작동 방식을 이해하는 데 어려움이 있습니다. IRLS로 scipy의 최소 제곱 함수 이해
a, b = scipy.linalg.lstsq(X, w*signal)[0]
는 그 신호가 신호를 나타내는 배열을 알고 현재
w
내가
X
또는
w
이 가중 최소 제곱을 모방하거나 반복적으로 최소 제곱 reweighted 조작하는 방법 단지
[1,1,1,1,1...]
입니까?
다음. 당신은 아래의 링크로 공식을 얻을 수 있습니다 :
데이터 준비 :
import numpy as np
np.random.seed(0)
N = 20
X = np.random.rand(N, 3)
w = np.array([1.0, 2.0, 3.0])
y = np.dot(X, w) + np.random.rand(N) * 0.1
OLS :
from scipy import linalg
w1 = linalg.lstsq(X, y)[0]
print w1
출력 :
을여기 http://en.wikipedia.org/wiki/Linear_least_squares_%28mathematics%29#Weighted_linear_least_squares
은 예입니다
[ 0.98561405 2.0275357 3.05930664]
WLS :
weights = np.linspace(1, 2, N)
Xw = X * np.sqrt(weights)[:, None]
yw = y * np.sqrt(weights)
print linalg.lstsq(Xw, yw)[0]
출력 : statsmodels 의해
[ 0.98799029 2.02599521 3.0623824 ]
검사 결과 :
import statsmodels.api as sm
mod_wls = sm.WLS(y, X, weights=weights)
res = mod_wls.fit()
print res.params
출력 :
[ 0.98799029 2.02599521 3.0623824 ]
,745,
w
의 elementwise square-roots에서 대각선 행렬 W
을 만듭니다. 그럼 난 그냥 싶은 생각 : 당신이 SQRT (무게)와 제품 X와 Y는 가중 최소 제곱을 계산할 수있는 경우
scipy.linalg.lstsq(np.dot(W, X), np.dot(W*signal))
하는 http://en.wikipedia.org/wiki/Linear_least_squares_(mathematics)#Weighted_linear_least_squares