2017-08-20 5 views
0

は、私はそうのような行を見つけるためにnumpyのを使用することができます実現:最小二乗フィット2Dライン

import numpy as np 
import matplotlib.pyplot as plt 
a = np.array([1,2,3,4,6,7]) 
b = np.array([5,4,3,2,-2,-1]) 
k,m = np.polyfit(a,b,1) 
plt.scatter(a,b) 
plt.plot([0,10],[m,10*k+m]) 
plt.show() 

enter image description here

が、私が代わりに生のPythonコードを使用したいと思います。私の数学はあまりにも錆びていますが、コードのいくつかの行でできたら、私は本当に助けに感謝します!あなたのサンプル入力の場合

def linear_fit(x, y): 
    """For set of points `(xi, yi)`, return linear polynomial `f(x) = k*x + m` that 
    minimizes the sum of quadratic errors. 
    """ 
    meanx = sum(x)/len(x) 
    meany = sum(y)/len(y) 
    k = sum((xi-meanx)*(yi-meany) for xi,yi in zip(x,y))/sum((xi-meanx)**2 for xi in x) 
    m = meany - k*meanx 
    return k, m 

+0

私はあなたの質問を理解しているかわかりません。生のPythonコードとはどういう意味ですか?通常の最小二乗係数推定の式をすばやく見つけることができます。 'numpy' /' scipy'行列代数ルーチンを使わなければ "数行"にうまく収まらないかもしれませんが、実装するのはかなり簡単です。 –

+0

@ juanpa.arrivillaga:numpy行列代数の実装は間違いなく十分です(しかし、私はそれを理解することはできません)! –

+1

私の電話はありますが、[これを確認してください](https://www.google.com/amp/s/thetarzan.wordpress.com/2012/10/27/calculate-ols-regression-manually-in –

答えて

1

あなたが次のエラーを最小化することに基づいてsimple linear regressionを探している場合は、純粋なPython実装は、(上記のリンクをαとβのための方程式を確認してください)非常に簡単です:

>>> x = [1,2,3,4,6,7] 
>>> y = [5,4,3,2,-2,-1] 
>>> linear_fit(x, y) 
(-1.1614906832298135, 6.285714285714285) 
関連する問題