Hình dung trăn ma trận tương quan lớn

Viết ma trận tương quan đường chéo

các thành phần gốc được sử dụng. , ,

from string import ascii_letters
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

sns.set_theme[style="white"]

# Generate a large random dataset
rs = np.random.RandomState[33]
d = pd.DataFrame[data=rs.normal[size=[100, 26]],
                 columns=list[ascii_letters[26:]]]

# Compute the correlation matrix
corr = d.corr[]

# Generate a mask for the upper triangle
mask = np.triu[np.ones_like[corr, dtype=bool]]

# Set up the matplotlib figure
f, ax = plt.subplots[figsize=[11, 9]]

# Generate a custom diverging colormap
cmap = sns.diverging_palette[230, 20, as_cmap=True]

# Draw the heatmap with the mask and correct aspect ratio
sns.heatmap[corr, mask=mask, cmap=cmap, vmax=.3, center=0,
            square=True, linewidths=.5, cbar_kws={"shrink": .5}]

Trong hướng dẫn này, bạn sẽ học cách tính toán ma trận tương quan trong Python và cách vẽ nó dưới dạng bản đồ nhiệt. Bạn sẽ tìm hiểu ma trận tương quan là gì và cách giải thích nó, cũng như đánh giá ngắn về hệ số tương quan là gì

Sau đó, bạn sẽ học cách tính toán ma trận tương quan với thư viện gấu trúc. Sau đó, bạn sẽ học cách vẽ ma trận tương quan bản đồ nhiệt bằng Seaborn. Cuối cùng, bạn sẽ tìm hiểu cách tùy chỉnh các bản đồ nhiệt này để bao gồm các giá trị nhất định

Câu trả lời nhanh. Sử dụng Pandas'

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
2 để tính toán ma trận tương quan trong Python

# Calculating a Correlation Matrix with Pandas
import pandas as pd

matrix = df.corr[]
print[matrix]

# Returns:
#           b_len     b_dep     f_len     f_dep
# b_len  1.000000 -0.235053  0.656181  0.595110
# b_dep -0.235053  1.000000 -0.583851 -0.471916
# f_len  0.656181 -0.583851  1.000000  0.871202
# f_dep  0.595110 -0.471916  0.871202  1.000000

Mục lục

Ma trận tương quan là gì và cách giải thích nó

Ma trận tương quan là một công cụ phổ biến được sử dụng để so sánh các hệ số tương quan giữa các tính năng [hoặc thuộc tính] khác nhau trong tập dữ liệu. Nó cho phép chúng ta hình dung mức độ [hoặc ít] tương quan tồn tại giữa các biến khác nhau

Đây là một bước quan trọng trong quy trình tiền xử lý máy học. Vì ma trận tương quan cho phép chúng tôi xác định các biến có mức độ tương quan cao, chúng cho phép chúng tôi giảm số lượng các tính năng chúng tôi có thể có trong tập dữ liệu

Điều này thường được gọi là giảm kích thước và có thể được sử dụng để cải thiện thời gian chạy và hiệu quả của các mô hình của chúng tôi

Đó là lý thuyết về ma trận tương quan của chúng tôi. Nhưng nó thực sự trông như thế nào?

Điều này có nghĩa là nếu chúng ta có một tập dữ liệu có 10 cột, thì ma trận của chúng ta sẽ có 10 hàng và 10 cột. Mỗi hàng và cột đại diện cho một biến [hoặc cột] trong tập dữ liệu của chúng tôi và giá trị trong ma trận là hệ số tương quan giữa hàng và cột tương ứng

Hệ số tương quan là gì?

  • Giá trị càng gần 1 [hoặc -1] thì mối quan hệ càng bền chặt
  • Một số càng gần 0, mối quan hệ càng yếu

Một hệ số âm sẽ cho chúng ta biết rằng mối quan hệ là âm, nghĩa là khi một giá trị tăng thì giá trị kia giảm. Tương tự, một hệ số dương chỉ ra rằng khi một giá trị tăng lên thì giá trị kia cũng tăng theo.

Hãy xem ma trận tương quan trông như thế nào khi chúng ta ánh xạ nó dưới dạng bản đồ nhiệt. Ở đây, chúng ta có một ma trận 4×4 đơn giản, nghĩa là chúng ta có 4 cột và 4 hàng

Một ma trận tương quan mẫu được hiển thị dưới dạng bản đồ nhiệt

Các giá trị trong ma trận của chúng tôi là các hệ số tương quan giữa các cặp tính năng. Chúng ta có thể thấy rằng chúng ta có một đường chéo gồm các giá trị của 1. Điều này là do các giá trị này biểu thị mối tương quan giữa một cột và chính nó. Tất nhiên, vì các giá trị này luôn giống nhau nên chúng sẽ luôn là 1

Nếu bạn tinh mắt, bạn sẽ nhận thấy rằng các giá trị ở trên cùng bên phải là hình ảnh phản chiếu của phía dưới bên trái của ma trận. Điều này là do mối quan hệ giữa hai biến trong các cặp hàng-cột sẽ luôn giống nhau. Thực tế phổ biến là loại bỏ những thứ này khỏi ma trận bản đồ nhiệt để trực quan hóa dữ liệu tốt hơn. Đây là điều bạn sẽ học trong các phần sau của hướng dẫn

Tính toán ma trận tương quan bằng Python với Pandas

Pandas giúp tạo ma trận tương quan cực kỳ dễ dàng bằng phương pháp DataFrame,

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
5. Phương thức nhận một số tham số. Hãy khám phá chúng trước khi đi sâu vào một ví dụ

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]

Theo mặc định, phương pháp

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
6 sẽ sử dụng hệ số tương quan Pearson, mặc dù bạn cũng có thể chọn phương pháp Kendall hoặc spearman. Tương tự, bạn có thể giới hạn số lượng quan sát cần thiết để tạo ra kết quả

Đang tải một khung dữ liệu Pandas mẫu

Bây giờ bạn đã hiểu về cách thức hoạt động của phương thức, hãy tải một Khung dữ liệu Pandas mẫu. Đối với điều này, chúng tôi sẽ sử dụng chức năng Seaborn

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
7, cho phép chúng tôi tạo một số bộ dữ liệu dựa trên dữ liệu trong thế giới thực. Chúng tôi sẽ tải tập dữ liệu
matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
8. Seaborn cho phép chúng tôi tạo các trực quan hóa Python rất hữu ích, cung cấp trình bao bọc cấp cao dễ sử dụng trên Matplotlib

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
0

Hãy chia nhỏ những gì chúng ta đã làm ở đây

  • Chúng tôi đã tải thư viện Pandas bằng bí danh pd. Chúng tôi cũng đã tải thư viện Seaborn bằng bí danh sns
  • Sau đó, chúng tôi đã tạo một DataFrame,
    matrix = df.corr[
        method = 'pearson',  # The method of correlation
        min_periods = 1      # Min number of observations required
    ]
    9, sử dụng hàm load_dataset và chuyển vào
    matrix = df.corr[
        method = 'pearson',  # The method of correlation
        min_periods = 1      # Min number of observations required
    ]
    00 làm đối số
  • Cuối cùng, chúng tôi đã in năm hàng đầu tiên của DataFrame bằng phương pháp
    matrix = df.corr[
        method = 'pearson',  # The method of correlation
        min_periods = 1      # Min number of observations required
    ]
    01

Chúng ta có thể thấy rằng DataFrame của chúng ta có 7 cột. Một số cột này là số và một số khác là chuỗi

Tính toán ma trận tương quan với Pandas

Bây giờ chúng ta đã tải Pandas DataFrame, hãy sử dụng phương pháp

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
6 để tính toán ma trận tương quan của chúng ta. Chúng tôi sẽ chỉ áp dụng phương pháp trực tiếp cho toàn bộ DataFrame

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
5

Chúng ta có thể thấy rằng trong khi khung dữ liệu ban đầu của chúng ta có bảy cột, Pandas chỉ tính toán ma trận bằng các cột số. Chúng tôi có thể thấy rằng bốn trong số các cột của chúng tôi đã được chuyển thành các cặp hàng cột, biểu thị mối quan hệ giữa hai cột

Ví dụ, chúng ta có thể thấy rằng hệ số tương quan giữa các biến

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
03 và
matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
04 là 0. 87. Điều này chỉ ra rằng có một mối quan hệ tương đối chặt chẽ, tích cực giữa hai biến

Làm tròn giá trị ma trận tương quan của chúng tôi với Pandas

Chúng ta có thể làm tròn các giá trị trong ma trận thành hai chữ số để dễ đọc hơn. Ma trận được trả về thực sự là một Pandas Dataframe. Điều này có nghĩa là chúng ta thực sự có thể áp dụng các phương thức khung dữ liệu khác nhau cho chính ma trận. Chúng ta có thể sử dụng phương thức Pandas

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
05 để làm tròn các giá trị của mình

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
9

Mặc dù chúng tôi mất một chút độ chính xác khi làm điều này, nhưng nó giúp các mối quan hệ dễ đọc hơn

Trong phần tiếp theo, bạn sẽ học cách sử dụng thư viện Seaborn để vẽ bản đồ nhiệt dựa trên ma trận

Cách vẽ sơ đồ ma trận tương quan bản đồ nhiệt với Seaborn

Trong nhiều trường hợp, bạn sẽ muốn hình dung một ma trận tương quan. Điều này được thực hiện dễ dàng ở định dạng bản đồ nhiệt, nơi chúng tôi có thể hiển thị các giá trị mà chúng tôi có thể hiểu rõ hơn một cách trực quan. Thư viện Seaborn giúp tạo bản đồ nhiệt rất dễ dàng, sử dụng hàm

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
06

Bây giờ hãy nhập pyplot từ matplotlib để trực quan hóa dữ liệu của chúng tôi. Mặc dù chúng tôi thực sự sẽ sử dụng Seaborn để trực quan hóa dữ liệu, nhưng Seaborn chủ yếu dựa vào matplotlib để trực quan hóa dữ liệu

# Calculating a Correlation Matrix with Pandas
import pandas as pd

matrix = df.corr[]
print[matrix]

# Returns:
#           b_len     b_dep     f_len     f_dep
# b_len  1.000000 -0.235053  0.656181  0.595110
# b_dep -0.235053  1.000000 -0.583851 -0.471916
# f_len  0.656181 -0.583851  1.000000  0.871202
# f_dep  0.595110 -0.471916  0.871202  1.000000
1

Ở đây, chúng tôi đã nhập thư viện

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
07 dưới dạng
matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
08, cho phép chúng tôi hiển thị dữ liệu của mình. Sau đó, chúng tôi đã sử dụng hàm
matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
09, chuyển vào ma trận của mình và yêu cầu thư viện chú thích bản đồ nhiệt của chúng tôi với các giá trị bằng cách sử dụng tham số
matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
50. Điều này trả về biểu đồ sau

Trực quan hóa ma trận tương quan với hầu hết các tham số mặc định

Chúng ta có thể thấy rằng một số điều kỳ lạ đã xảy ra ở đây. Đầu tiên, chúng ta biết rằng một hệ số tương quan có thể nhận các giá trị từ -1 đến +1. Biểu đồ của chúng tôi hiện chỉ hiển thị các giá trị từ khoảng -0. 5 đến +1. Vì điều này, trừ khi chúng ta cẩn thận, chúng ta có thể suy luận rằng các mối quan hệ tiêu cực mạnh mẽ hơn thực tế

Hơn nữa, dữ liệu không hiển thị theo cách khác nhau. Chúng tôi muốn màu sắc của chúng tôi trở nên mạnh mẽ khi các mối quan hệ trở nên bền chặt. Thay vào đó, màu sắc yếu đi khi các giá trị tiến gần đến +1

Chúng tôi có thể sửa đổi một vài tham số bổ sung tại đây

  1. matrix = df.corr[
        method = 'pearson',  # The method of correlation
        min_periods = 1      # Min number of observations required
    ]
    51,
    matrix = df.corr[
        method = 'pearson',  # The method of correlation
        min_periods = 1      # Min number of observations required
    ]
    52 được sử dụng để neo bản đồ màu. Nếu không có giá trị nào được thông qua, các giá trị được suy ra, dẫn đến các giá trị âm không vượt quá 0. 5. Vì chúng tôi biết rằng các hệ số hoặc mối tương quan nên được cố định ở +1 và -1, chúng tôi có thể chuyển các hệ số này vào
  2. matrix = df.corr[
        method = 'pearson',  # The method of correlation
        min_periods = 1      # Min number of observations required
    ]
    53 loài giá trị để căn giữa bản đồ màu khi chúng tôi vẽ dữ liệu phân kỳ. Vì chúng tôi muốn các màu phân kỳ từ 0, chúng tôi nên chỉ định 0 làm đối số ở đây
  3. cmap= cho phép chúng tôi chuyển sang một bản đồ màu khác. Bởi vì chúng tôi muốn màu sắc mạnh hơn ở hai đầu của sự phân kỳ, chúng tôi có thể chuyển vlag làm đối số để hiển thị màu sắc chuyển từ xanh lam sang đỏ

Hãy thử điều này một lần nữa, chuyển vào ba đối số mới này

# Calculating a Correlation Matrix with Pandas
import pandas as pd

matrix = df.corr[]
print[matrix]

# Returns:
#           b_len     b_dep     f_len     f_dep
# b_len  1.000000 -0.235053  0.656181  0.595110
# b_dep -0.235053  1.000000 -0.583851 -0.471916
# f_len  0.656181 -0.583851  1.000000  0.871202
# f_dep  0.595110 -0.471916  0.871202  1.000000
9

Điều này trả về ma trận sau. Nó phân kỳ từ -1 đến +1 và màu tối đi một cách thuận tiện ở một trong hai cực

Bản đồ nhiệt được định dạng đúng với các màu khác nhau

Trong phần này, bạn đã học cách định dạng bản đồ nhiệt được tạo bằng Seaborn để hình dung rõ hơn mối quan hệ giữa các cột

Chỉ vẽ nửa dưới của ma trận tương quan với Seaborn

Một điều mà bạn sẽ nhận thấy là việc hiển thị cả nửa trên và nửa dưới của ma trận tương quan là dư thừa như thế nào. Tâm trí của chúng ta chỉ có thể giải thích được rất nhiều – vì điều này, có thể hữu ích khi chỉ hiển thị nửa dưới của hình dung của chúng ta. Tương tự, có thể loại bỏ đường chéo 1 giây, vì đường chéo này không có giá trị thực

Để thực hiện điều này, chúng ta có thể sử dụng hàm numpy

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
54, hàm này tạo ra một tam giác của ma trận. Hãy bắt đầu bằng cách nhập numpy và thêm biến
matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
55 vào hàm của chúng ta. Sau đó, chúng ta có thể chuyển mặt nạ này vào hàm Seaborn của mình, yêu cầu bản đồ nhiệt chỉ che các giá trị mà chúng ta muốn xem

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
2

Điều này trả về hình ảnh sau đây

Chỉ hiển thị nửa dưới của ma trận bằng cách sử dụng mặt nạ có nhiều mảng

Chúng ta có thể thấy việc hiểu sức mạnh của các mối quan hệ trong tập dữ liệu của chúng ta ở đây dễ dàng hơn nhiều như thế nào. Bởi vì chúng tôi đã loại bỏ một số lượng đáng kể hình ảnh lộn xộn [hơn một nửa. ], chúng ta có thể diễn giải ý nghĩa đằng sau hình ảnh trực quan tốt hơn nhiều

Cách lưu Ma trận tương quan vào một tệp trong Python

Có thể đôi khi bạn muốn thực sự lưu ma trận tương quan theo chương trình. Cho đến nay, chúng tôi đã sử dụng hàm

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
56 để hiển thị biểu đồ của mình. Tất nhiên, sau đó bạn có thể tự lưu kết quả vào máy tính của mình. Nhưng matplotlib giúp dễ dàng lưu biểu đồ theo chương trình bằng cách sử dụng hàm
matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
57 để lưu tệp của chúng tôi

Tệp cho phép chúng tôi chuyển vào một đường dẫn tệp để chỉ ra nơi chúng tôi muốn lưu tệp. Giả sử chúng tôi muốn lưu nó vào thư mục nơi tập lệnh đang chạy, chúng tôi có thể chuyển vào một đường dẫn tương đối như bên dưới

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
5

Trong đoạn mã hiển thị ở trên, chúng tôi sẽ lưu tệp dưới dạng tệp png với tên heatmap. Tệp sẽ được lưu trong thư mục nơi tập lệnh đang chạy

Chỉ chọn các mối tương quan mạnh trong ma trận tương quan

Trong một số trường hợp, bạn có thể chỉ muốn chọn các mối tương quan mạnh trong ma trận. Nói chung, một mối tương quan được coi là mạnh khi giá trị tuyệt đối lớn hơn hoặc bằng 0. 7. Vì ma trận được trả về là Khung dữ liệu Pandas, chúng tôi có thể sử dụng các phương pháp lọc Pandas để lọc khung dữ liệu của mình

Vì chúng tôi muốn chọn các mối quan hệ mạnh mẽ, chúng tôi cần có thể chọn các giá trị lớn hơn hoặc bằng 0. 7 và nhỏ hơn hoặc bằng -0. 7 Vì điều này sẽ làm cho tuyên bố lựa chọn của chúng ta phức tạp hơn, nên chúng ta chỉ cần lọc theo giá trị tuyệt đối của hệ số tương quan

Hãy xem làm thế nào chúng ta có thể làm điều này

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
6

Ở đây, trước tiên chúng tôi lấy ma trận của mình và áp dụng phương pháp

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
58, chuyển đổi ma trận thành chuỗi giá trị 1 chiều, với đa chỉ số. Điều này có nghĩa là mỗi chỉ mục chỉ ra cả hàng và cột hoặc ma trận trước đó. Sau đó, chúng tôi có thể lọc chuỗi dựa trên giá trị tuyệt đối

Chỉ chọn các Tương quan Tích cực / Tiêu cực trong Ma trận Tương quan

Trong một số trường hợp, bạn có thể chỉ muốn chọn các mối tương quan tích cực trong tập dữ liệu hoặc chỉ các mối tương quan tiêu cực. Một lần nữa, chúng ta có thể làm điều này bằng cách giải nén khung dữ liệu trước tiên và sau đó chỉ chọn các mối quan hệ tích cực hoặc tiêu cực

Trước tiên hãy xem cách chúng ta chỉ có thể chọn các mối quan hệ tích cực

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
0

Ở đây chúng ta có thể thấy rằng quá trình này gần giống với việc chỉ chọn các mối quan hệ mạnh mẽ. Chúng tôi chỉ cần thay đổi bộ lọc của chuỗi để chỉ bao gồm các mối quan hệ trong đó hệ số lớn hơn 0

Tương tự, nếu muốn chọn theo quan hệ phủ định, chúng ta chỉ cần thay đổi một ký tự. Chúng ta có thể thay đổi

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
59 thành so sánh
matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
90

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
1

Đây là một công cụ hữu ích, cho phép chúng tôi xem mối quan hệ nào là một trong hai hướng. Chúng tôi thậm chí có thể kết hợp những điều này và chỉ chọn các mối quan hệ tích cực mạnh mẽ hoặc các mối quan hệ tiêu cực mạnh mẽ

Sự kết luận

Trong hướng dẫn này, bạn đã học cách sử dụng Python và Pandas để tính toán ma trận tương quan. Bạn đã học ngắn gọn ma trận tương quan là gì và cách giải thích nó. Sau đó, bạn đã học cách sử dụng phương pháp Pandas

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
6 để tính toán ma trận tương quan và cách lọc nó dựa trên các tiêu chí khác nhau. Bạn cũng đã học cách sử dụng thư viện Seaborn để trực quan hóa ma trận bằng cách sử dụng hàm
matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
06, cho phép bạn hình dung và hiểu dữ liệu tốt hơn trong nháy mắt

Để tìm hiểu thêm về phương pháp khung dữ liệu Pandas

matrix = df.corr[
    method = 'pearson',  # The method of correlation
    min_periods = 1      # Min number of observations required
]
5, hãy xem tài liệu chính thức tại đây

Chủ Đề