Hướng dẫn logistic regression python w3schools - hồi quy logistic python w3schools


Trên trang này, W3Schools.com hợp tác với Học viện Khoa học Dữ liệu NYC, để cung cấp nội dung đào tạo kỹ thuật số cho sinh viên của chúng tôi.


Hồi quy logistic

Hồi quy logistic nhằm mục đích giải quyết các vấn đề phân loại. Nó thực hiện điều này bằng cách dự đoán kết quả phân loại, không giống như hồi quy tuyến tính dự đoán kết quả liên tục.

Trong trường hợp đơn giản nhất, có hai kết quả, được gọi là nhị thức, một ví dụ trong đó dự đoán nếu một khối u là ác tính hoặc lành tính. Các trường hợp khác có nhiều hơn hai kết quả để phân loại, trong trường hợp này, nó được gọi là đa hình. Một ví dụ phổ biến cho hồi quy logistic đa hình sẽ dự đoán lớp của một bông hoa mống mắt giữa 3 loài khác nhau.

Ở đây chúng tôi sẽ sử dụng hồi quy logistic cơ bản để dự đoán một biến nhị thức. Điều này có nghĩa là nó chỉ có hai kết quả có thể.


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

Trong Python, chúng tôi có các mô -đun sẽ thực hiện công việc cho chúng tôi. Bắt đầu bằng cách nhập mô -đun Numpy.

import numpy

Lưu trữ các biến độc lập trong X.

Lưu trữ biến phụ thuộc trong y.

Dưới đây là bộ dữ liệu mẫu:

#X represents the size of a tumor in centimeters.
X = numpy.array([3.78, 2.44, 2.09, 0.14, 1.72, 1.65, 4.92, 4.37, 4.96, 4.52, 3.69, 5.88]).reshape(-1,1)

#Note: X has to be reshaped into a column from a row for the LogisticRegression() function to work.
#y represents whether or not the tumor is cancerous (0 for "No", 1 for "Yes").
y = numpy.array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1])

Chúng tôi sẽ sử dụng một phương thức từ mô -đun Sklearn, vì vậy chúng tôi cũng sẽ phải nhập mô -đun đó:

from sklearn import linear_model

Từ mô -đun sklearn, chúng tôi sẽ sử dụng phương thức logisticRegress () để tạo đối tượng hồi quy logistic.

Đối tượng này có một phương thức gọi là fit() lấy các giá trị độc lập và phụ thuộc làm tham số và điền vào đối tượng hồi quy bằng dữ liệu mô tả mối quan hệ:

logr = linear_model.LogisticRegression()
logr.fit(X,y)

Bây giờ chúng ta có một đối tượng hồi quy logistic đã sẵn sàng cho dù khối u có ung thư dựa trên kích thước khối u:

#predict if tumor is cancerous where the size is 3.46mm:
predicted = logr.predict(numpy.array([3.46]).reshape(-1,1))

Thí dụ

Xem toàn bộ ví dụ trong hành động:

Nhập Numpy từ Sklearn Nhập Linear_Model
from sklearn import linear_model

#Reshaped cho chức năng logistic. X = numpy.array ([3.78, 2.44, 2.09, 0.14, 1.72, 1.65, 4.92, 4.37, 4.96, 4.52, 3.69, 5,88]). , 0, 0, 0, 0, 1, 1, 1, 1, 1, 1])
X = numpy.array([3.78, 2.44, 2.09, 0.14, 1.72, 1.65, 4.92, 4.37, 4.96, 4.52, 3.69, 5.88]).reshape(-1,1)
y = numpy.array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1])

logr = linear_model.logisticRegress () logr.fit (x, y)
logr.fit(X,y)

#Predict Nếu khối u là ung thư trong đó kích thước là 3,46mm: dự đoán = logro.predict (numpy.array ([3.46]). reshape (-1,1)) in (dự đoán)
predicted = logr.predict(numpy.array([3.46]).reshape(-1,1))
print(predicted)

Kết quả

Chạy ví dụ »

Chúng tôi đã dự đoán rằng một khối u có kích thước 3,46mm sẽ không bị ung thư.


QUẢNG CÁO


Hệ số

Trong hồi quy logistic, hệ số là sự thay đổi dự kiến ​​trong các ODD log của việc có kết quả trên mỗi đơn vị thay đổi trong X.

Điều này không có sự hiểu biết trực quan nhất vì vậy chúng ta hãy sử dụng nó để tạo ra một cái gì đó có ý nghĩa hơn, tỷ lệ cược.

Thí dụ

Xem toàn bộ ví dụ trong hành động:

Nhập Numpy từ Sklearn Nhập Linear_Model
from sklearn import linear_model

#Reshaped cho chức năng logistic. X = numpy.array ([3.78, 2.44, 2.09, 0.14, 1.72, 1.65, 4.92, 4.37, 4.96, 4.52, 3.69, 5,88]). , 0, 0, 0, 0, 1, 1, 1, 1, 1, 1])
X = numpy.array([3.78, 2.44, 2.09, 0.14, 1.72, 1.65, 4.92, 4.37, 4.96, 4.52, 3.69, 5.88]).reshape(-1,1)
y = numpy.array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1])

logr = linear_model.logisticRegress () logr.fit (x, y)
logr.fit(X,y)

#Predict Nếu khối u là ung thư trong đó kích thước là 3,46mm: dự đoán = logro.predict (numpy.array ([3.46]). reshape (-1,1)) in (dự đoán)
odds = numpy.exp(log_odds)

Kết quả

Kết quả

Chạy ví dụ »

Chúng tôi đã dự đoán rằng một khối u có kích thước 3,46mm sẽ không bị ung thư.


QUẢNG CÁO

Hệ số

Trong hồi quy logistic, hệ số là sự thay đổi dự kiến ​​trong các ODD log của việc có kết quả trên mỗi đơn vị thay đổi trong X.

def logit2prob(logr,x):
  log_odds = logr.coef_ * x + logr.intercept_
  odds = numpy.exp(log_odds)
  probability = odds / (1 + odds)
  return(probability)

Điều này không có sự hiểu biết trực quan nhất vì vậy chúng ta hãy sử dụng nó để tạo ra một cái gì đó có ý nghĩa hơn, tỷ lệ cược.

log_odds = logr.coef_ actds = numpy.exp (log_odds)

log_odds = logr.coef_ * x + logr.intercept_

in (tỷ lệ cược)

import numpy0

Điều này cho chúng ta biết rằng khi kích thước của một khối u tăng 1mm, tỷ lệ cược của nó là một khối u tăng 4 lần.

import numpy1

Xác suất

Thí dụ

Xem toàn bộ ví dụ trong hành động:

Nhập Numpy từ Sklearn Nhập Linear_Model
from sklearn import linear_model

#Reshaped cho chức năng logistic. X = numpy.array ([3.78, 2.44, 2.09, 0.14, 1.72, 1.65, 4.92, 4.37, 4.96, 4.52, 3.69, 5,88]). , 0, 0, 0, 0, 1, 1, 1, 1, 1, 1])
y = numpy.array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1])

logr = linear_model.logisticRegress () logr.fit (x, y)
logr.fit(X,y)

#Predict Nếu khối u là ung thư trong đó kích thước là 3,46mm: dự đoán = logro.predict (numpy.array ([3.46]). reshape (-1,1)) in (dự đoán)
  log_odds = logr.coef_ * X + logr.intercept_
  odds = numpy.exp(log_odds)
  probability = odds / (1 + odds)
  return(probability)

Kết quả

Chạy ví dụ »

  [[0.60749955]
   [0.19268876]
   [0.12775886]
   [0.00955221]
   [0.08038616]
   [0.07345637]
   [0.88362743]
   [0.77901378]
   [0.88924409]
   [0.81293497]
   [0.57719129]
   [0.96664243]]
   

Chạy ví dụ »

Chúng tôi đã dự đoán rằng một khối u có kích thước 3,46mm sẽ không bị ung thư.

QUẢNG CÁO

Hệ số

Trong hồi quy logistic, hệ số là sự thay đổi dự kiến ​​trong các ODD log của việc có kết quả trên mỗi đơn vị thay đổi trong X.