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 tuyến tính


hồi quy

Thuật ngữ hồi quy được sử dụng khi bạn cố gắng tìm mối quan hệ giữa các biến.

Trong Học máy và trong mô hình thống kê, mối quan hệ đó được sử dụng để dự đoán kết quả của các sự kiện trong tương lai.


Hồi quy tuyến tính

Hồi quy tuyến tính sử dụng mối quan hệ giữa các điểm dữ liệu để vẽ một đường thẳng xuyên qua tất cả chúng.

Dòng này có thể được sử dụng để dự đoán các giá trị trong tương lai.

Trong Học máy, dự đoán tương lai là rất quan trọng.


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 tuyến tính. 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ụ bên dưới, trục x biểu thị tuổi và trục y biểu thị tốc độ. Chúng tôi đã đăng ký tuổi và tốc độ của 13 chiếc ô tô khi chúng đi qua một trạm thu phí. Hãy để chúng tôi xem liệu dữ liệu chúng tôi thu thập có thể được sử dụng trong một hồi quy tuyến tính hay không:

Thí dụ

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

import matplotlib.pyplot as plt

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

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

Kết quả:

Thí dụ

Nhập scipyvà vẽ đường hồi quy tuyến tính:

import matplotlib.pyplot as plt
from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

mymodel = list(map(myfunc, x))

plt.scatter(x, y)
plt.plot(x, mymodel)
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 Matplotlib trong Hướng dẫn Matplotlib 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 matplotlib.pyplot as plt
from scipy import stats

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

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

Thực thi một phương thức trả về một số giá trị chính quan trọng của Hồi quy tuyến tính:

slope, intercept, r, p, std_err = stats.linregress(x, y)

Tạo một hàm sử dụng các giá trị slopeinterceptđể trả về một giá trị mới. Giá trị mới này đại diện cho vị trí trên trục y, giá trị x tương ứng sẽ được đặt:

def myfunc(x):
  return slope * x + intercept

Chạy từng giá trị của mảng x thông qua hàm. Điều này sẽ dẫn đến một mảng mới với các giá trị mới cho trục y:

mymodel = list(map(myfunc, x))

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

plt.scatter(x, y)

Vẽ đường hồi quy tuyến tính:

plt.plot(x, mymodel)

Hiển thị sơ đồ:

plt.show()



R cho mối quan hệ

Đ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à các giá trị của trục y như thế nào, nếu không có mối quan hệ thì hồi quy tuyến tính không thể được sử dụng để dự đoán bất cứ điều gì.

Mối quan hệ này - hệ số tương quan - được gọi là r.

Giá rtrị nằm trong khoảng từ -1 đến 1, trong đó 0 có nghĩa là không có mối quan hệ và 1 (và -1) có nghĩa là có liên quan 100%.

Python và mô-đun Scipy 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à cung cấp cho nó các giá trị 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 tuyến tính?

from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

print(r)

Lưu ý: Kết quả -0,76 cho thấy rằng có một mối quan hệ, không phải là hoàn hảo, nhưng nó chỉ ra rằng chúng ta có thể sử dụng hồi quy tuyến tính 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ô 10 năm tuổi.

Để làm như vậy, chúng ta cần myfunc()hàm tương tự từ ví dụ trên:

def myfunc(x):
  return slope * x + intercept

Thí dụ

Dự đoán vận tốc của một ô tô 10 tuổi:

from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

speed = myfunc(10)

print(speed)

Ví dụ dự đoán tốc độ là 85,6, 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 tuyến tính sẽ 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 đối với hồi quy tuyến tính:

import matplotlib.pyplot as plt
from scipy import stats

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]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

mymodel = list(map(myfunc, x))

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

Kết quả:

rcho mối quan hệ?

Thí dụ

Bạn sẽ nhận được một rgiá trị rất thấp.

import numpy
from scipy import stats

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]

slope, intercept, r, p, std_err = stats.linregress(x, y)

print(r)

Kết quả: 0,013 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 tuyến tính.