Hướng dẫn how do you find the correlation in python? - làm thế nào để bạn tìm thấy mối tương quan trong python?

Cập nhật lần cuối vào ngày 20 tháng 8 năm 2020

Có thể có mối quan hệ phức tạp và chưa biết giữa các biến trong bộ dữ liệu của bạn.

Điều quan trọng là khám phá và định lượng mức độ mà các biến trong tập dữ liệu của bạn phụ thuộc vào nhau. Kiến thức này có thể giúp bạn chuẩn bị tốt hơn dữ liệu của mình để đáp ứng các kỳ vọng của các thuật toán học máy, chẳng hạn như hồi quy tuyến tính, có hiệu suất sẽ giảm dần với sự hiện diện của các sự phụ thuộc lẫn nhau này.

Trong hướng dẫn này, bạn sẽ phát hiện ra rằng mối tương quan là bản tóm tắt thống kê về mối quan hệ giữa các biến và cách tính toán nó cho các loại và mối quan hệ khác nhau.correlation is the statistical summary of the relationship between variables and how to calculate it for different types variables and relationships.

Sau khi hoàn thành hướng dẫn này, bạn sẽ biết:

  • Cách tính một ma trận hiệp phương sai để tóm tắt mối quan hệ tuyến tính giữa hai hoặc nhiều biến.
  • Cách tính hệ số tương quan Pearson, để tóm tắt mối quan hệ tuyến tính giữa hai biến.
  • Cách tính hệ số tương quan Spearman, để tóm tắt mối quan hệ đơn điệu giữa hai biến.

Khởi động dự án của bạn với số liệu thống kê sách mới của tôi cho học máy, bao gồm các hướng dẫn từng bước và các tệp mã nguồn Python cho tất cả các ví dụ. with my new book Statistics for Machine Learning, including step-by-step tutorials and the Python source code files for all examples.

Bắt đầu nào.

  • Cập nhật tháng 5/2018: Mô tả cập nhật về dấu hiệu của hiệp phương sai (cảm ơn Fulya).: Updated description of the sign of the covariance (thanks Fulya).

Hướng dẫn how do you find the correlation in python? - làm thế nào để bạn tìm thấy mối tương quan trong python?

Cách sử dụng tương quan để hiểu mối quan hệ giữa các biến của Fraser, một số quyền được bảo lưu.
Photo by Fraser Mummery, some rights reserved.

Tổng quan hướng dẫn

Hướng dẫn này được chia thành 5 phần; họ đang:

  1. Tương quan là gì?
  2. Kiểm tra bộ dữ liệu
  3. Hiệp phương sai
  4. Tương quan Pearson
  5. Tương quan Spearman

Cần trợ giúp về số liệu thống kê cho học máy?

Tham gia khóa học gặp sự cố email 7 ngày miễn phí của tôi ngay bây giờ (với mã mẫu).

Nhấp để đăng ký và cũng nhận được phiên bản Ebook PDF miễn phí của khóa học.

Tương quan là gì?

Kiểm tra bộ dữ liệu

Hiệp phương sai

  • Tương quan Pearson
  • Tương quan Spearman
  • Cần trợ giúp về số liệu thống kê cho học máy?

Tham gia khóa học gặp sự cố email 7 ngày miễn phí của tôi ngay bây giờ (với mã mẫu).

Nhấp để đăng ký và cũng nhận được phiên bản Ebook PDF miễn phí của khóa học.

  • Các biến trong bộ dữ liệu có thể liên quan vì nhiều lý do.: both variables change in the same direction.
  • Ví dụ:: No relationship in the change of the variables.
  • Một biến có thể gây ra hoặc phụ thuộc vào các giá trị của biến khác.: variables change in opposite directions.

Một biến có thể được liên kết nhẹ với một biến khác.

Hai biến có thể phụ thuộc vào một biến không xác định thứ ba.

Nó có thể hữu ích trong phân tích dữ liệu và mô hình hóa để hiểu rõ hơn về mối quan hệ giữa các biến. Mối quan hệ thống kê giữa hai biến được gọi là mối tương quan của chúng.

Một mối tương quan có thể là tích cực, có nghĩa là cả hai biến di chuyển theo cùng một hướng hoặc âm, có nghĩa là khi một giá trị biến biến tăng, các biến khác của các giá trị của các biến khác giảm. Tương quan cũng có thể là trung tính hoặc không, có nghĩa là các biến không liên quan.

Kiểm tra bộ dữ liệu

Hiệp phương sai

Tương quan Pearson

Tương quan Spearman

Cần trợ giúp về số liệu thống kê cho học máy?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# Tạo các biến liên quan

từ nhập khẩu trung bìnhnumpy import mean

từ Std nhập khẩu Numpynumpy import std

từ numpy.random nhập khẩu randnnumpy.random import randn

từ Numpy.Random Hạt nhập nhập khẩunumpy.random import seed

từ pyplot nhập khẩu matplotlibmatplotlib import pyplot

# Trình tạo số ngẫu nhiên hạt giống

seed(1)(1)

# Chuẩn bị dữ liệu

data1=20*randn(1000)+100=20*randn(1000)+100

data2=data1+(10*randn(1000)+50)= data1+(10*randn(1000)+50)

# Tóm tắt

print ('data1: mean =%. 3f stdv =%. 3f'%(mean (data1), std (data1))))('data1: mean=%.3f stdv=%.3f'% (mean(data1),std(data1)))

print ('data2: mean =%. 3f stdv =%. 3f'%(trung bình (data2), std (data2))))('data2: mean=%.3f stdv=%.3f'%(mean(data2), std(data2)))

# kịch bản

pyplot.scatter(data1,data2).scatter(data1,data2)

pyplot.show().show()

Chạy ví dụ đầu tiên in độ lệch trung bình và độ lệch chuẩn cho mỗi biến.

Data1: mean = 100.776 STDV = 19.620

Data2: mean = 151.050 STDV = 22.358

Một biểu đồ phân tán của hai biến được tạo ra. Bởi vì chúng tôi đã tạo ra bộ dữ liệu, chúng tôi biết có một mối quan hệ giữa hai biến. Điều này là rõ ràng khi chúng tôi xem xét âm mưu phân tán được tạo ra nơi chúng ta có thể thấy một xu hướng ngày càng tăng.

Hướng dẫn how do you find the correlation in python? - làm thế nào để bạn tìm thấy mối tương quan trong python?

Biểu đồ phân tán của bộ dữ liệu tương quan thử nghiệm

Trước khi chúng ta xem xét việc tính toán một số điểm tương quan, trước tiên chúng ta phải xem xét một khối xây dựng thống kê quan trọng, được gọi là hiệp phương sai.

Hiệp phương sai

Các biến có thể liên quan bởi một mối quan hệ tuyến tính. Đây là một mối quan hệ liên tục phụ gia trên hai mẫu dữ liệu.

Mối quan hệ này có thể được tóm tắt giữa hai biến, được gọi là hiệp phương sai. Nó được tính là trung bình của sản phẩm giữa các giá trị từ mỗi mẫu, trong đó các giá trị đã được tập trung (có sự trừ trung bình của chúng).

Việc tính toán hiệp phương sai như sau:

cov (x, y) = (sum (x - mean (x)) * (y - mean (y))) * 1/(n -1)

Việc sử dụng giá trị trung bình trong tính toán cho thấy sự cần thiết của mỗi mẫu dữ liệu phải có phân phối giống như Gaussian hoặc Gaussian.

Dấu hiệu của hiệp phương sai có thể được giải thích là liệu hai biến thay đổi theo cùng một hướng (dương) hoặc thay đổi theo các hướng khác nhau (âm). Độ lớn của hiệp phương sai không dễ dàng diễn giải. Giá trị hiệp phương sai của Zero chỉ ra rằng cả hai biến hoàn toàn độc lập.

Hàm Numpy Cov () có thể được sử dụng để tính toán ma trận hiệp phương sai giữa hai hoặc nhiều biến.

covariance=cov(data1,data2)=cov(data1,data2)

Đường chéo của ma trận chứa hiệp phương sai giữa mỗi biến và chính nó. Các giá trị khác trong ma trận đại diện cho hiệp phương sai giữa hai biến; Trong trường hợp này, hai giá trị còn lại là giống nhau mà chúng tôi đang tính toán hiệp phương sai chỉ cho hai biến.

Chúng ta có thể tính toán ma trận hiệp phương sai cho hai biến trong bài kiểm tra của chúng ta.

Ví dụ hoàn chỉnh được liệt kê dưới đây.

# Tính hiệp phương sai giữa hai biến

từ numpy.random nhập khẩu randnnumpy.random import randn

từ Numpy.Random Hạt nhập nhập khẩunumpy.random import seed

từ pyplot nhập khẩu matplotlibnumpy import cov

# Trình tạo số ngẫu nhiên hạt giống

seed(1)(1)

# Chuẩn bị dữ liệu

data1=20*randn(1000)+100=20*randn(1000)+100

data2=data1+(10*randn(1000)+50)=data1+(10* randn(1000)+50)

# Tóm tắt

covariance=cov(data1,data2)=cov(data1,data2)

print(covariance)(covariance)

print ('data1: mean =%. 3f stdv =%. 3f'%(mean (data1), std (data1))))

print ('data2: mean =%. 3f stdv =%. 3f'%(trung bình (data2), std (data2))))

# kịch bản

Chạy ví dụ đầu tiên in độ lệch trung bình và độ lệch chuẩn cho mỗi biến.

Data1: mean = 100.776 STDV = 19.620

Data2: mean = 151.050 STDV = 22.358

Một biểu đồ phân tán của hai biến được tạo ra. Bởi vì chúng tôi đã tạo ra bộ dữ liệu, chúng tôi biết có một mối quan hệ giữa hai biến. Điều này là rõ ràng khi chúng tôi xem xét âm mưu phân tán được tạo ra nơi chúng ta có thể thấy một xu hướng ngày càng tăng.

Biểu đồ phân tán của bộ dữ liệu tương quan thử nghiệm

Trước khi chúng ta xem xét việc tính toán một số điểm tương quan, trước tiên chúng ta phải xem xét một khối xây dựng thống kê quan trọng, được gọi là hiệp phương sai.

Hiệp phương sai

Các biến có thể liên quan bởi một mối quan hệ tuyến tính. Đây là một mối quan hệ liên tục phụ gia trên hai mẫu dữ liệu.

Mối quan hệ này có thể được tóm tắt giữa hai biến, được gọi là hiệp phương sai. Nó được tính là trung bình của sản phẩm giữa các giá trị từ mỗi mẫu, trong đó các giá trị đã được tập trung (có sự trừ trung bình của chúng).

Việc tính toán hiệp phương sai như sau:

cov (x, y) = (sum (x - mean (x)) * (y - mean (y))) * 1/(n -1)

Hàm scipy pearsonr () có thể được sử dụng để tính toán hệ số tương quan Pearson, giữa hai mẫu dữ liệu có cùng độ dài.

Chúng ta có thể tính toán mối tương quan giữa hai biến trong bài kiểm tra của chúng ta.

Ví dụ hoàn chỉnh được liệt kê dưới đây.

# Tính tương quan của Pearson giữa hai biến

từ numpy.random nhập khẩu randnnumpy.random import randn

từ Numpy.Random Hạt nhập nhập khẩunumpy.random import seed

từ scipy.stats nhập pearsonrscipy.stats import pearsonr

# Trình tạo số ngẫu nhiên hạt giống

seed(1)(1)

# Chuẩn bị dữ liệu

data1=20*randn(1000)+100=20*randn(1000)+100

data2=data1+(10*randn(1000)+50)=data1+(10* randn(1000)+50)

# Tính tương quan của Pearson

corr,_=pearsonr(data1,data2),_=pearsonr(data1,data2)

in ('Pearsons tương quan: %.3f' %Corr)('Pearsons correlation: %.3f' %corr)

Chạy ví dụ tính toán và in hệ số tương quan Pearson.

Chúng ta có thể thấy rằng hai biến có mối tương quan tích cực và mối tương quan là 0,8. Điều này cho thấy mức độ tương quan cao, ví dụ: giá trị trên 0,5 và gần 1,0.

Tương quan Pearssons: 0,888

Hệ số tương quan Pearson, có thể được sử dụng để đánh giá mối quan hệ giữa hơn hai biến.

Điều này có thể được thực hiện bằng cách tính toán một ma trận của các mối quan hệ giữa mỗi cặp biến trong tập dữ liệu. Kết quả là một ma trận đối xứng được gọi là ma trận tương quan với giá trị 1.0 dọc theo đường chéo vì mỗi cột luôn tương quan hoàn hảo với chính nó.

Tương quan Spearman

Hai biến có thể liên quan đến mối quan hệ phi tuyến, do đó mối quan hệ mạnh hơn hoặc yếu hơn trong quá trình phân phối của các biến.

Hơn nữa, hai biến được xem xét có thể có phân phối không Gaussian.

Trong trường hợp này, hệ số tương quan Spearman, (được đặt tên cho Charles Spearman) có thể được sử dụng để tóm tắt sức mạnh giữa hai mẫu dữ liệu. Bài kiểm tra mối quan hệ này cũng có thể được sử dụng nếu có mối quan hệ tuyến tính giữa các biến, nhưng sẽ có công suất ít hơn một chút (ví dụ: có thể dẫn đến điểm số hệ số thấp hơn).

Như với hệ số tương quan Pearson, điểm số nằm trong khoảng từ -1 đến 1 cho các biến tương quan tiêu cực hoàn hảo và tương quan hoàn hảo tương ứng.

Thay vì tính toán hệ số bằng cách sử dụng hiệp phương sai và độ lệch chuẩn trên chính các mẫu, các số liệu thống kê này được tính từ thứ hạng tương đối của các giá trị trên mỗi mẫu. Đây là một cách tiếp cận phổ biến được sử dụng trong các thống kê không tham số, ví dụ: Các phương pháp thống kê trong đó chúng tôi không giả định phân phối dữ liệu như Gaussian.

Hệ số tương quan của Spearman = covariance (xếp hạng (x), xếp hạng (y)) / (stdv (xếp hạng (x)) * stdv (xếp hạng (y)))

Một mối quan hệ tuyến tính giữa các biến không được giả định, mặc dù mối quan hệ đơn điệu được giả định. Đây là một tên toán học cho mối quan hệ tăng hoặc giảm giữa hai biến.

Nếu bạn không chắc chắn về phân phối và mối quan hệ có thể có giữa hai biến, hệ số tương quan Spearman là một công cụ tốt để sử dụng.

Chức năng scipy SpearManr () có thể được sử dụng để tính toán hệ số tương quan Spearman, giữa hai mẫu dữ liệu có cùng độ dài.

Chúng ta có thể tính toán mối tương quan giữa hai biến trong bài kiểm tra của chúng ta.

Ví dụ hoàn chỉnh được liệt kê dưới đây.

# Tính tương quan của Spearmans giữa hai biến

từ numpy.random nhập khẩu randnnumpy.random import randn

từ Numpy.Random Hạt nhập nhập khẩunumpy.random import seed

từ scipy.stats nhập pearsonrscipy.stats import spearmanr

# Trình tạo số ngẫu nhiên hạt giống

seed(1)(1)

# Chuẩn bị dữ liệu

data1=20*randn(1000)+100=20*randn(1000)+100

data2=data1+(10*randn(1000)+50)=data1+(10* randn(1000)+50)

# Tính tương quan của Pearson

corr,_=spearmanr(data1,data2),_=spearmanr(data1,data2)

in ('Pearsons tương quan: %.3f' %Corr)('Spearmans correlation: %.3f' %corr)

Chạy ví dụ tính toán và in hệ số tương quan Pearson.

Chúng ta có thể thấy rằng hai biến có mối tương quan tích cực và mối tương quan là 0,8. Điều này cho thấy mức độ tương quan cao, ví dụ: giá trị trên 0,5 và gần 1,0.

Tương quan Pearssons: 0,888

Hệ số tương quan Pearson, có thể được sử dụng để đánh giá mối quan hệ giữa hơn hai biến.

Điều này có thể được thực hiện bằng cách tính toán một ma trận của các mối quan hệ giữa mỗi cặp biến trong tập dữ liệu. Kết quả là một ma trận đối xứng được gọi là ma trận tương quan với giá trị 1.0 dọc theo đường chéo vì mỗi cột luôn tương quan hoàn hảo với chính nó.

  • Tương quan Spearman

Hai biến có thể liên quan đến mối quan hệ phi tuyến, do đó mối quan hệ mạnh hơn hoặc yếu hơn trong quá trình phân phối của các biến.

Hơn nữa, hai biến được xem xét có thể có phân phối không Gaussian.

  • Trong trường hợp này, hệ số tương quan Spearman, (được đặt tên cho Charles Spearman) có thể được sử dụng để tóm tắt sức mạnh giữa hai mẫu dữ liệu. Bài kiểm tra mối quan hệ này cũng có thể được sử dụng nếu có mối quan hệ tuyến tính giữa các biến, nhưng sẽ có công suất ít hơn một chút (ví dụ: có thể dẫn đến điểm số hệ số thấp hơn).
  • Như với hệ số tương quan Pearson, điểm số nằm trong khoảng từ -1 đến 1 cho các biến tương quan tiêu cực hoàn hảo và tương quan hoàn hảo tương ứng.
  • Thay vì tính toán hệ số bằng cách sử dụng hiệp phương sai và độ lệch chuẩn trên chính các mẫu, các số liệu thống kê này được tính từ thứ hạng tương đối của các giá trị trên mỗi mẫu. Đây là một cách tiếp cận phổ biến được sử dụng trong các thống kê không tham số, ví dụ: Các phương pháp thống kê trong đó chúng tôi không giả định phân phối dữ liệu như Gaussian.

Hệ số tương quan của Spearman = covariance (xếp hạng (x), xếp hạng (y)) / (stdv (xếp hạng (x)) * stdv (xếp hạng (y)))

Đọc thêm

Phần này cung cấp nhiều tài nguyên hơn về chủ đề nếu bạn đang muốn đi sâu hơn.

Bài viết

  • Giới thiệu nhẹ nhàng về giá trị dự kiến, phương sai và hiệp phương sai với Numpy
  • Giới thiệu nhẹ nhàng về tự tương quan và tự tương quan một phần

API

  • numpy.random.seed () API
  • numpy.random.randn () API
  • numpy.mean () API
  • api numpy.std ()
  • matplotlib.pyplot.scatter () API
  • api numpy.cov ()
  • scipy.stats.pearsonr () API
  • scipy.stats.spearmanr () API

Bài viết

  • Mối tương quan và phụ thuộc vào wikipedia
  • Hiệp phương sai trên wikipedia
  • Hệ số tương quan Pearson trên Wikipedia
  • Hệ số tương quan xếp hạng của Spearman trên Wikipedia
  • Xếp hạng trên Wikipedia

Bản tóm tắt

Trong hướng dẫn này, bạn đã phát hiện ra rằng mối tương quan là bản tóm tắt thống kê về mối quan hệ giữa các biến và cách tính toán nó cho các loại và mối quan hệ khác nhau.

Cụ thể, bạn đã học được:

  • Cách tính một ma trận hiệp phương sai để tóm tắt mối quan hệ tuyến tính giữa hai hoặc nhiều biến.
  • Cách tính hệ số tương quan Pearson, để tóm tắt mối quan hệ tuyến tính giữa hai biến.
  • Cách tính hệ số tương quan Spearman, để tóm tắt mối quan hệ đơn điệu giữa hai biến.

Bạn có câu hỏi nào không? Đặt câu hỏi của bạn trong các ý kiến ​​dưới đây và tôi sẽ cố gắng hết sức để trả lời.
Ask your questions in the comments below and I will do my best to answer.

Nhận một xử lý về số liệu thống kê cho học máy!

Hướng dẫn how do you find the correlation in python? - làm thế nào để bạn tìm thấy mối tương quan trong python?

Phát triển sự hiểu biết làm việc về số liệu thống kê

... bằng cách viết dòng mã trong Python

Khám phá cách trong ebook mới của tôi: Phương pháp thống kê cho học máy
Statistical Methods for Machine Learning

Nó cung cấp các hướng dẫn tự học về các chủ đề như: các bài kiểm tra giả thuyết, tương quan, thống kê không tham số, lấy mẫu lại và nhiều hơn nữa ...self-study tutorials on topics like:
Hypothesis Tests, Correlation, Nonparametric Stats, Resampling, and much more...

Khám phá cách chuyển đổi dữ liệu thành kiến ​​thức

Bỏ qua các học giả. Chỉ là kết quả.

Xem những gì bên trong