サーチ…
前書き
ライン(または他の機能)をデータポイントのセットに当てはめる。
np.polyfitの使用
次に、$ f(x)= mx + c $の直線で近似するデータセットを作成します。
npoints = 20
slope = 2
offset = 3
x = np.arange(npoints)
y = slope * x + offset + np.random.normal(size=npoints)
p = np.polyfit(x,y,1) # Last argument is degree of polynomial
私たちが行ったことを見るには:
import matplotlib.pyplot as plt
f = np.poly1d(p) # So we can call f(x)
fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot(x, y, 'bo', label="Data")
plt.plot(x,f(x), 'b-',label="Polyfit")
plt.show()
注:この例は、 https: //docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.htmlのnumpyのドキュメントに非常によく似ています。
np.linalg.lstsqの使用
polyfitと同じデータセットを使用します。
npoints = 20
slope = 2
offset = 3
x = np.arange(npoints)
y = slope * x + offset + np.random.normal(size=npoints)
今、| cA b | ** 2を最小化することによって、線形方程式A b = cのシステムを最小化することによって解を見つけることを試みる
import matplotlib.pyplot as plt # So we can plot the resulting fit
A = np.vstack([x,np.ones(npoints)]).T
m, c = np.linalg.lstsq(A, y)[0] # Don't care about residuals right now
fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot(x, y, 'bo', label="Data")
plt.plot(x, m*x+c, 'r--',label="Least Squares")
plt.show()
注:この例は、 https: //docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.htmlにあるnumpyのマニュアルに準拠しています 。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow