1

この質問は次のようになります。線形表面を最小二乗法で近似しますが、サンプルデータはありません。私はひどく遅いに違いないが、私はそれを動かすことができないようだ。

私は次のコードを持っています:

    import numpy as np
    XYZ = np.array([[0, 1, 0, 1],
        [0, 0, 1, 1],
        [1, 1, 1, 1]])
    A = np.row_stack((np.ones(len(XYZ[0])), XYZ[0, :], XYZ[1:]))
    coeffs = np.linalg.lstsq(A.T, XYZ[2, :])[0]
    print coeffs

出力は次のとおりです。

    [  5.00000000e-01   5.55111512e-17   9.71445147e-17   5.00000000e-01]

z = a + bx + cyつまり、3つの係数が必要ですが、出力では4つになります。ここでどこが間違っているのですか?私は係数が次のようなものになることを期待していました:

    [ 1.0 0.0 0.0]

助けていただければ幸いです。

4

1 に答える 1

0

Peter Schneider(コメント)は正しいです:あなたはにフィードしたいと思うでしょXYZ[1, :]row_stack

>>> A = np.row_stack((np.ones(len(XYZ[0])), XYZ[0, :], XYZ[1, :]))
>>> np.linalg.lstsq(A.T, XYZ[2, :])[0]
array([  1.00000000e+00,  -7.85046229e-17,  -7.85046229e-17])
于 2012-12-04T10:24:43.323 に答える