Hướng dẫn Python

TRANG CHỦ Python Giới thiệu Python Python Bắt đầu Cú pháp Python Nhận xét Python Biến Python Các kiểu dữ liệu Python Số Python Đúc Python Chuỗi Python Python Booleans Toán tử Python Danh sách Python Python Tuples Bộ Python Từ điển Python Python Nếu ... Khác Python While Loops Python cho các vòng lặp Các hàm Python Python Lambda Mảng Python Các lớp / đối tượng Python Kế thừa Python Trình lặp lại Python Phạm vi Python Mô-đun Python Ngày trong Python Toán Python JSON Python Python RegEx Python PIP Python Thử ... Ngoại trừ Đầu vào của người dùng Python Định dạng chuỗi Python

Xử lý tập tin

Xử lý tệp Python Tệp đọc Python Viết / tạo tệp trong Python Xóa tệp trong Python

Mô-đun Python

Hướng dẫn NumPy Panda Walkthrough Hướng dẫn về Scipy

Python Matplotlib

Giới thiệu Matplotlib Matplotlib Bắt đầu Matplotlib Pyplot Matplotlib Plotting Điểm đánh dấu Matplotlib Dòng Matplotlib Nhãn Matplotlib Matplotlib Grid Matplotlib Subplots Matplotlib Scatter Matplotlib Bars Biểu đồ Matplotlib Biểu đồ bánh Matplotlib

Học máy

Bắt đầu Chế độ trung bình trung bình Độ lệch chuẩn Phân vị Phân phối dữ liệu Phân phối dữ liệu bình thường Lô phân tán Hồi quy tuyến tính Hồi quy đa thức Nhiều hồi quy Tỉ lệ Huấn luyện / Kiểm tra Cây quyết định

Python MySQL

MySQL Bắt đầu MySQL Tạo cơ sở dữ liệu MySQL Tạo bảng Chèn MySQL Lựa chọn MySQL MySQL ở đâu MySQL Đặt hàng bởi MySQL Delete Bảng thả MySQL Cập nhật MySQL Giới hạn MySQL Tham gia MySQL

Python MongoDB

MongoDB Bắt đầu MongoDB Tạo cơ sở dữ liệu MongoDB Tạo Bộ sưu tập Chèn MongoDB MongoDB Tìm Truy vấn MongoDB MongoDB sắp xếp MongoDB Xóa MongoDB Drop Collection Cập nhật MongoDB Giới hạn MongoDB

Tham khảo Python

Tổng quan về Python Các hàm tích hợp trong Python Phương thức chuỗi Python Phương thức danh sách Python Phương thức từ điển Python Phương thức Tuple trong Python Phương thức tập hợp Python Phương thức tệp Python Từ khóa Python Ngoại lệ Python Bảng chú giải thuật ngữ Python

Tham chiếu mô-đun

Mô-đun ngẫu nhiên Mô-đun yêu cầu Mô-đun thống kê Mô-đun Toán học Mô-đun cMath

Python Làm thế nào để

Xóa danh sách trùng lặp Đảo ngược một chuỗi Thêm hai số

Ví dụ Python

Ví dụ Python Trình biên dịch Python Bài tập Python Python Quiz Chứng chỉ Python

Học máy - Hồi quy đa thức


Hồi quy đa thức

Nếu các điểm dữ liệu của bạn rõ ràng sẽ không phù hợp với một hồi quy tuyến tính (một đường thẳng xuyên qua tất cả các điểm dữ liệu), thì nó có thể là lý tưởng cho hồi quy đa thức.

Hồi quy đa thức, giống như hồi quy tuyến tính, sử dụng mối quan hệ giữa các biến x và y để tìm cách tốt nhất để vẽ một đường thẳng qua các điểm dữ liệu.


Làm thế nào nó hoạt động?

Python có các phương pháp để tìm mối quan hệ giữa các điểm dữ liệu và để vẽ một đường hồi quy đa thức. Chúng tôi sẽ chỉ cho bạn cách sử dụng các phương pháp này thay vì đi qua công thức toán học.

Trong ví dụ dưới đây, chúng tôi đã đăng ký 18 chiếc ô tô khi chúng đi qua một trạm thu phí nhất định.

Chúng tôi đã đăng ký tốc độ của ô tô và thời gian trong ngày (giờ) xảy ra.

Trục x biểu thị giờ trong ngày và trục y biểu thị tốc độ:

Thí dụ

Bắt đầu bằng cách vẽ một biểu đồ phân tán:

import matplotlib.pyplot as plt

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

plt.scatter(x, y)
plt.show()

Kết quả:

Thí dụ

Nhập numpy matplotlibsau đó vẽ dòng hồi quy đa thức:

import numpy
import matplotlib.pyplot as plt

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

myline = numpy.linspace(1, 22, 100)

plt.scatter(x, y)
plt.plot(myline, mymodel(myline))
plt.show()

Kết quả:

Giải thích ví dụ

Nhập các mô-đun bạn cần.

Bạn có thể tìm hiểu về mô-đun NumPy trong Hướng dẫn NumPy của chúng tôi .

Bạn có thể tìm hiểu về mô-đun SciPy trong Hướng dẫn SciPy của chúng tôi .

import numpy
import matplotlib.pyplot as plt

Tạo các mảng đại diện cho các giá trị của trục x và y:

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

NumPy có một phương thức cho phép chúng ta tạo một mô hình đa thức:

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

Sau đó chỉ định cách dòng sẽ hiển thị, chúng tôi bắt đầu ở vị trí 1 và kết thúc ở vị trí 22:

myline = numpy.linspace(1, 22, 100)

Vẽ biểu đồ phân tán ban đầu:

plt.scatter(x, y)

Vẽ đường hồi quy đa thức:

plt.plot(myline, mymodel(myline))

Hiển thị sơ đồ:

plt.show()



R-Bình phương

Điều quan trọng là phải biết mối quan hệ giữa các giá trị của trục x và y như thế nào, nếu không có mối quan hệ này thì hồi quy đa thức không thể được sử dụng để dự đoán bất cứ điều gì.

Mối quan hệ được đo bằng một giá trị được gọi là bình phương r.

Giá trị bình phương r nằm trong khoảng từ 0 đến 1, trong đó 0 có nghĩa là không có mối quan hệ và 1 có nghĩa là có liên quan 100%.

Python và mô-đun Sklearn sẽ tính toán giá trị này cho bạn, tất cả những gì bạn phải làm là nạp nó bằng các mảng x và y:

Thí dụ

Dữ liệu của tôi phù hợp như thế nào trong một hồi quy đa thức?

import numpy
from sklearn.metrics import r2_score

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

print(r2_score(y, mymodel(x)))

Lưu ý: Kết quả 0,94 cho thấy có một mối quan hệ rất tốt và chúng ta có thể sử dụng hồi quy đa thức trong các dự đoán trong tương lai.


Dự đoán Giá trị Tương lai

Bây giờ chúng ta có thể sử dụng thông tin thu thập được để dự đoán các giá trị trong tương lai.

Ví dụ: Chúng ta hãy thử dự đoán tốc độ của một chiếc ô tô đi qua trạm thu phí vào khoảng 17 giờ chiều:

Để làm như vậy, chúng ta cần cùng một mymodelmảng từ ví dụ trên:

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

Thí dụ

Dự đoán vận tốc của ô tô đi lúc 17 giờ chiều:

import numpy
from sklearn.metrics import r2_score

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

speed = mymodel(17)
print(speed)

Ví dụ dự đoán tốc độ là 88,87, chúng ta cũng có thể đọc được từ biểu đồ:


Phù hợp xấu?

Hãy để chúng tôi tạo một ví dụ trong đó hồi quy đa thức không phải là phương pháp tốt nhất để dự đoán các giá trị trong tương lai.

Thí dụ

Các giá trị này cho trục x và y sẽ dẫn đến sự phù hợp rất xấu cho hồi quy đa thức:

import numpy
import matplotlib.pyplot as plt

x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

myline = numpy.linspace(2, 95, 100)

plt.scatter(x, y)
plt.plot(myline, mymodel(myline))
plt.show()

Kết quả:

Và giá trị bình phương r?

Thí dụ

Bạn sẽ nhận được giá trị bình phương r rất thấp.

import numpy
from sklearn.metrics import r2_score

x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

print(r2_score(y, mymodel(x)))

Kết quả: 0,00995 chỉ ra mối quan hệ rất xấu và cho chúng ta biết rằng tập dữ liệu này không phù hợp với hồi quy đa thức.