Malutas ang pagtaas ng LinAlgError ('Ang SVD ay hindi nagtagpo sa mga Linear Least Squares') na error kapag gumagamit ng numpy.polyfit
Solve Raise Linalgerror Error When Using Numpy
#Test talib module import talib import numpy as np import pandas as pd import matplotlib.pyplot as plt df = [] close_list = [] f = open('trade_records/contract_data_HOUR.txt','r') data = f.readlines() for item in data: df.append(eval(item)) f.close() print(df) df = pd.DataFrame(df) print(df) real = talib.MA(df.close,timeperiod=3) print(real) x=range(0,len(real)-2,1) y= real[2:] #Find the polynomial of x,y z1 = np.polyfit(x,list(y),6) p1 = np.poly1d(z1)# Convert to polynomial expression yvals = p1(x) #Find the fitting function yvals #Draw fitting curve plt.plot(x,y,'b--',label='original values') plt.plot(x,yvals,'r',label='polyfit values') plt.xlabel('Time') plt.ylabel('Price') plt.legend(loc=3) plt.show()
Ang halaga ng tunay ay:
0 NaN 1 NaN 2 3.606000 3 3.584333 4 3.580000 5 3.572333 6 3.585000 7 3.589000 8 3.599667 9 3.593000 10 3.585000 11 3.575667 12 3.557000 13 3.544000 14 3.562000 15 3.590000 16 3.613333 17 3.598333 18 3.590000 19 3.577000 dtype: float64
Sa halimbawa sa itaas, ang unang dalawang halaga ng tunay ay uri ng np.NaN, kaya't hindi maisagawa ang balangkas, at pagkatapos ay lilitaw ang LinAlgError. Kailangan mo lamang alisin ang iligal na halaga at maaari itong tumakbo nang normal
resulta ng operasyon: