3
したがって、データポイントのセットを入力するときに線形回帰を使用して傾向線を表示しようとしています。私はTkinterを使用してデータの入力を取得し、それらをfloatに変換してリストに入れます。私はプログラムを実行するとき、私はこのエラーコードを取得します。linalg.lstsq(numpy)を使用すると数学的なドメインエラーが発生する
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1486, in __call__
return self.func(*args)
File "C:/Users/NIBO9901/PycharmProjects/Matteuppgift/Trendlinje/Input.py", line 78, in plot
m, c = np.linalg.lstsq(a, y)[0]
File "C:\Python27\lib\site-packages\numpy\linalg\linalg.py", line 1889, in lstsq
nlvl = max(0, int(math.log(float(min(m, n))/2.)) + 1)
ValueError: math domain error
そして、それが参照のうえのコードはここにある:
xList = []
yList = []
x = np.array(xList)
y = np.array(yList)
if 0 < len(inpX0.get()):
xList.append(float(inpX0.get()))
if 0 < len(inpX1.get()):
xList.append(float(inpX1.get()))
if 0 < len(inpY0.get()):
yList.append(float(inpY0.get()))
if 0 < len(inpY1.get()):
yList.append(float(inpY1.get()))
a = np.vstack([x, np.ones(len(x))]).T
m, c = np.linalg.lstsq(a, y)[0]
plt.plot(x, y, 'o', label='Data', markersize=10)
plt.plot(x, m*x + c, 'r', label='Trendlinje')
plt.legend()
plt.show()
inpX/Yは、Tkinterのエントリです。
は、あなたが 'A'をプリントアウトしたことがありますか?ナンシーアレイは、あなたがそれらを使用する方法では動作しません。 'xList = 'には、' x = np.array(xList) 'を実行する必要があります。 'xList'に項目を追加してもnumpyの配列' x'は更新されません。 – cel
@celありがとうございました! –