Python phù hợp với đường thẳng

Như một ví dụ đơn giản về biểu đồ phân tán, đối với một nhóm người, chúng tôi có thể ghi lại chiều cao và cỡ giày của họ. Sau đó, một biểu đồ phân tán sẽ bao gồm một dấu chấm cho mỗi người, cho biết chiều cao của họ [x] và cỡ giày [y]

Đây là mã để tạo một biểu đồ phân tán

import matplotlib.pyplot as plt

height = [172, 171, 174, 169, 172, 173, 173, 177, 182, 180,
          181, 179, 183, 181, 186, 184, 185, 189, 184, 187]
shoe = [8.5, 7.0, 8.0, 8.0, 7.5, 9.0, 8.5, 8.0, 10.0, 9.5,
        9.5, 8.0, 11.0, 9.5, 12.0, 11.5, 9.5, 12.0, 9.5, 11.0]

plt.plot[height, shoe, 'bo']
plt.show[]

Chúng tôi đang sử dụng hàm

s = d0*d0 + d1*d1 + d2*d2 ...
0 để tạo biểu đồ phân tán. Điều quan trọng ở đây là chuỗi
s = d0*d0 + d1*d1 + d2*d2 ...
1 khai báo kiểu 'bo' cho biết màu xanh lam và dấu tròn, nhưng nó không chỉ định kiểu đường kẻ. Kiểu đánh dấu không có kiểu đường kẻ sẽ không vẽ đường, chỉ hiển thị các điểm đánh dấu

Mỗi cặp giá trị [x, y] tương ứng với chiều cao và cỡ giày của một người trong nghiên cứu. Vì vậy, trong dữ liệu ví dụ, người đầu tiên có chiều cao 182 cm và cỡ giày 8. 5, người tiếp theo có chiều cao 171 cm và cỡ giày 7, v.v. Dữ liệu sử dụng cỡ giày của Vương quốc Anh, các quốc gia khác sử dụng một hệ thống hoàn toàn khác với những con số rất khác nhau

Đây là biểu đồ nó tạo ra

Lắp một đường thẳng

Khi chúng tôi khớp một đường thẳng, chúng tôi cố gắng tìm một đường thể hiện tốt nhất dữ liệu. Nó sẽ là một xấp xỉ vì các điểm nằm rải rác xung quanh nên không có đường thẳng biểu thị chính xác dữ liệu

Một cách phổ biến để tìm một đường thẳng phù hợp với một số dữ liệu phân tán là phương pháp bình phương nhỏ nhất

Đối với một tập hợp các điểm

s = d0*d0 + d1*d1 + d2*d2 ...
2 và một đường thẳng
s = d0*d0 + d1*d1 + d2*d2 ...
3 đã cho, với mỗi điểm bạn tính khoảng cách,
s = d0*d0 + d1*d1 + d2*d2 ...
0, giữa điểm và đường thẳng, như thế này

Sau đó chúng ta có thể tính tổng bình phương của khoảng cách

s = d0*d0 + d1*d1 + d2*d2 ...

Tổng này là thước đo tổng lỗi của đường khớp. Dòng tốt nhất là dòng có giá trị

s = d0*d0 + d1*d1 + d2*d2 ...
1 nhỏ nhất

Có một công thức để tìm sự phù hợp nhất của một dòng với một tập hợp gồm 12 điểm dữ liệu và may mắn thay, NumPy đã triển khai công thức đó

import numpy as np

m, c = np.polyfit[height, shoe, 1]
print[m, c]                # 0.21234550158091434 -28.65607933314174

s = d0*d0 + d1*d1 + d2*d2 ...
3 lấy một mảng giá trị x, một mảng giá trị y và bậc đa thức. Đặt mức độ thành 1 sẽ phù hợp với đường thẳng

Các giá trị

s = d0*d0 + d1*d1 + d2*d2 ...
4 và
s = d0*d0 + d1*d1 + d2*d2 ...
5 cắm vào phương trình chuẩn của một đường thẳng

y = m*x + c

Đây là một đường cắt qua trục y tại

s = d0*d0 + d1*d1 + d2*d2 ...
5 và có độ dốc là
s = d0*d0 + d1*d1 + d2*d2 ...
4. Sử dụng các giá trị từ đoạn mã trên, dòng này xấp xỉ

s = d0*d0 + d1*d1 + d2*d2 ...
2

Vẽ đồ thị đường thẳng

Quay trở lại dữ liệu đơn ban đầu, bây giờ chúng ta có thể thêm một đường thẳng phù hợp với dữ liệu. Chúng ta chỉ cần chọn hai giá trị cho

s = d0*d0 + d1*d1 + d2*d2 ...
8 và tính các giá trị tương ứng cho
s = d0*d0 + d1*d1 + d2*d2 ...
9. Sau đó chúng ta có thể vẽ một đường thẳng nối hai điểm

  • Khi
    s = d0*d0 + d1*d1 + d2*d2 ...
    
    8 là 169, thì
    s = d0*d0 + d1*d1 + d2*d2 ...
    
    9 là khoảng 7. 23
  • Khi
    s = d0*d0 + d1*d1 + d2*d2 ...
    
    8 là 189, thì
    s = d0*d0 + d1*d1 + d2*d2 ...
    
    9 là khoảng 11. 48

Đây là mã để vẽ biểu đồ phân tán và đường được trang bị

s = d0*d0 + d1*d1 + d2*d2 ...
9

Chúng tôi đã thêm một biểu đồ chứa hai điểm, với kiểu "k--", tạo ra một đường đứt nét màu đen

Đây là kết quả. Biểu đồ phân tán được vẽ như trước đây, nhưng chúng tôi cũng vẽ một đường đứt nét màu đen thể hiện sự phù hợp nhất của một đường thẳng với dữ liệu

Xem thêm

  • Biểu đồ đường trong Matplotlib
  • Nhiều sơ đồ dòng trong Matplotlib
  • Biểu đồ phân tán trong Matplotlib

Nếu bạn thấy bài viết này hữu ích, bạn có thể quan tâm đến cuốn sách Công thức NumPy hoặc các cuốn sách khác của cùng tác giả

Phương pháp nào được sử dụng để phù hợp với đường thẳng?

Sử dụng phương pháp bình phương nhỏ nhất để xác định phương trình của đường phù hợp nhất với dữ liệu. Sau đó vẽ đường thẳng. Phương trình đường thẳng là y = a + bx. Đây là phương trình đường xu hướng bắt buộc.

Làm cách nào để sử dụng Curve_fit trong Python?

Điều chỉnh dữ liệu .
Nhập hàm curve_fit từ scipy
Tạo một danh sách hoặc mảng gọn gàng của biến độc lập của bạn [giá trị x của bạn]. .
Tạo một danh sách các mảng numpy của các biến phụ thuộc của bạn [giá trị y của bạn]. .
Tạo một hàm cho phương trình bạn muốn điều chỉnh. .
Sử dụng chức năng curve_fit để điều chỉnh dữ liệu của bạn

Chủ Đề