Hướng dẫn dùng polyfit python python

Hãy để tôi bắt đầu bằng cách nói rằng những gì tôi nhận được có thể không phải là những gì tôi mong đợi và có lẽ bạn có thể giúp tôi ở đây. Tôi có dữ liệu sau:

>>> x
array([ 3.08,  3.1 ,  3.12,  3.14,  3.16,  3.18,  3.2 ,  3.22,  3.24,
    3.26,  3.28,  3.3 ,  3.32,  3.34,  3.36,  3.38,  3.4 ,  3.42,
    3.44,  3.46,  3.48,  3.5 ,  3.52,  3.54,  3.56,  3.58,  3.6 ,
    3.62,  3.64,  3.66,  3.68])

>>> y
array([ 0.000857,  0.001182,  0.001619,  0.002113,  0.002702,  0.003351,
    0.004062,  0.004754,  0.00546 ,  0.006183,  0.006816,  0.007362,
    0.007844,  0.008207,  0.008474,  0.008541,  0.008539,  0.008445,
    0.008251,  0.007974,  0.007608,  0.007193,  0.006752,  0.006269,
    0.005799,  0.005302,  0.004822,  0.004339,  0.00391 ,  0.003481,
    0.003095])

Bây giờ, tôi muốn kết hợp những dữ liệu này với, chẳng hạn, một đa thức bậc 4. Vì vậy tôi làm:

>>> coefs = np.polynomial.polynomial.polyfit(x, y, 4)
>>> ffit = np.poly1d(coefs)

Bây giờ tôi tạo một lưới mới cho các giá trị x để đánh giá hàm phù hợp ffit:

>>> x_new = np.linspace(x[0], x[-1], num=len(x)*10)

Khi tôi thực hiện tất cả việc vẽ biểu đồ (tập dữ liệu và đường cong phù hợp) bằng lệnh:

>>> fig1 = plt.figure()                                                                                           
>>> ax1 = fig1.add_subplot(111)                                                                                   
>>> ax1.scatter(x, y, facecolors='None')                                                                     
>>> ax1.plot(x_new, ffit(x_new))                                                                     
>>> plt.show()

Tôi nhận được những điều sau:

Hướng dẫn dùng polyfit python python

fit_data.png

Những gì tôi mong đợi là chức năng điều chỉnh để khớp chính xác (ít nhất là gần giá trị lớn nhất của dữ liệu). Tôi đang làm gì sai?

Cảm ơn trước.

51 hữu ích 0 bình luận 136k xem chia sẻ