Привет всем, я пытаюсь подогнать кривую по точкам, используя python, однако мне это не удалось, я начинающий, использующий python, и то, что я обнаружил, не помогло мне.
У меня есть набор данных, и я хочу проанализировать, какая строка описывает его лучше всего (полиномы разных порядков).
В numpy
и для полиномиальной подгонки есть polyfit()
и polyval()
. Но я получаю эту ошибку, и я не знаю, что это значит:
File "plantilla.py", line 28, in <module>
polinomio=np.polyfit(x,y,5)
File "/usr/lib/python2.7/dist-packages/numpy/lib/polynomial.py", line 581, in polyfit
c, resids, rank, s = lstsq(lhs, rhs, rcond)
File "/usr/lib/python2.7/dist-packages/numpy/linalg/linalg.py", line 1867, in lstsq
0, work, lwork, iwork, 0)
ValueError: On entry to DLASCL parameter number 4 had an illegal value
import pandas as pd
from matplotlib import pyplot as plt
from scipy.optimize import curve_fit
import numpy as np
import sympy as sym
#----------------------------------------------------
data=pd.read_csv('radiacion.dat',header=None,delim_whitespace=True)
x=data.ix[:,0]
y=data.ix[:,1]
"""
x=np.array(x,dtype=float)
y=np.array(y,dtype=float)
"""
#----------------------------------------------------
plt.plot(x,y,'r',label="Original Data")
plt.title('Radiacion')
plt.xlabel('t(s)' ,fontsize=14,fontweight='bold')
plt.ylabel('G(w/m)',fontsize=14,fontweight='bold')
plt.xticks(fontsize=10,fontweight='bold')
plt.yticks(fontsize=10,fontweight='bold')
plt.show ()
#plt.hold (True)
#----------------------------------------------------
polinomio=np.polyfit(x,y,5)
print (polinomio)
yP=np.polyval(poli,x)
plt.plot(x,yp,'b+',label="fitted cuerve")
Я ожидал, что что-то подобное оценит полином при определенных значениях x
.
p[0]*x**(N-1) + p[1]*x**(N-2) + ... + p[N-2]*x + p[N-1]
Мои входные данные:
25200 17
25800 38
26400 58
27000 93
27600 129
28200 163
28800 192
29400 234
30000 329
30600 387
31200 411
31800 460
32400 513
33000 569
33600 576
34200 635
34800 645
35400 683
36000 715
36600 747
37200 780
37800 810
38400 833
39000 862
39600 885
40200 910
40800 929
41400 945
42000 955
42600 974
43200 986
43800 985
44400 999
45000 1001
45600 993
46200 993
46800 999
47400 992
48000 985
48600 980
49200 978
49800 963
50400 959
51000 939
51600 917
52200 884
52800 881
53400 860
54000 845
54600 820
55200 812
55800 767
56400 720
57000 650
57600 619
58200 595
58800 541
59400 533
60000 504
60600 456
61200 389
61800 320
62400 285
63000 243
63600 279
64200 231
64800 192
65400 137
66000 91
66600 58
67200 38
67800 22
68400 9