Hướng dẫn correlation heatmap python matplotlib - tương quan bản đồ nhiệt bản đồ python matplotlib

Nếu bạn đang đọc blog này, tôi chắc chắn bạn đã thấy các bản đồ nhiệt. Họ rất đẹp, nhưng họ tiết lộ chỉ nhiều như họ che giấu. Khi được thực hiện đúng, họ có thể dễ dàng đọc được. Khi không, họ vẫn rất tuyệt khi nhìn vào, chỉ có thể không có nhiều chức năng.

Từ giờ trở đi, chúng ta sẽ xem xét một trong nhiều cách sử dụng tuyệt vời của các bản đồ nhiệt, bản đồ nhiệt tương quan. Ma trận tương quan là một công cụ thiết yếu của phân tích dữ liệu khám phá. Các bản đồ nhiệt tương quan chứa thông tin tương tự theo cách hấp dẫn trực quan. Hơn nữa: họ thể hiện trong một cái nhìn mà các biến tương quan, ở mức độ nào, theo hướng nào và cảnh báo chúng ta về các vấn đề đa hình tiềm năng.

Hãy cùng xem cách chúng ta có thể làm việc với Seaborn trong Python để tạo ra một bản đồ nhiệt tương quan cơ bản.

Đối với mục đích của chúng tôi, chúng tôi sẽ sử dụng bộ dữ liệu nhà ở Ames có sẵn trên kaggle.com. Bộ dữ liệu này chứa hơn 30 tính năng có khả năng ảnh hưởng đến phương sai về giá bán, biến số Y của chúng tôi.

Vì Seaborn đã được xây dựng trên thư viện trực quan hóa dữ liệu matplotlib và việc sử dụng hai kết hợp thường dễ dàng hơn, bên cạnh nhập khẩu thông thường, chúng tôi cũng sẽ nhập matplotlib.pyplot.

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

Mã sau đây tạo ra ma trận tương quan giữa tất cả các tính năng chúng tôi đang kiểm tra và biến số Y của chúng tôi.correlation matrix between all the features we are examining and our y-variable.

dataframe.corr()

Hướng dẫn correlation heatmap python matplotlib - tương quan bản đồ nhiệt bản đồ python matplotlib

Một ma trận tương quan với chỉ 13 biến. Không chính xác không thể đọc được. Tuy nhiên, tại sao không làm cho cuộc sống dễ dàng hơn?

Bản đồ nhiệt SeaBorn cơ bản

sns.heatmap(dataframe.corr());

Về khá là vô dụng.

Seaborn rất dễ sử dụng, khó điều hướng. Nó đi kèm với một loạt các tính năng sẵn có, và tài liệu quá mức. Thật khó để tìm ra chính xác những đối số nào sẽ sử dụng nếu bạn không muốn tất cả tiếng chuông và còi.

Hãy để Lừa làm cho chức năng của HeatMap cơ bản của chúng tôi với ít nỗ lực nhất có thể.

Hãy xem danh sách các cuộc tranh luận về nhiệt độ biển:

VMIN, VMAX - Đặt phạm vi các giá trị đóng vai trò là cơ sở cho ColorMapCMAP - đặt colormap cụ thể mà chúng tôi muốn sử dụng (kiểm tra thư viện của một loạt các bảng màu hoang dã ở đây) trung tâm - lấy một chiếc phao để tập trung colormap; Nếu không có CMAP được chỉ định, sẽ thay đổi màu sắc trong colormap mặc định; Nếu được đặt thành TRUE - nó thay đổi tất cả các màu của colormap thành bluesannot - khi được đặt thành true, các giá trị tương quan sẽ được hiển thị trên thanh di động màu - khi được đặt thành false, colorbar (phục vụ như một huyền thoại) — set the range of values that serve as the basis for the colormap
cmap — sets the specific colormap we want to use (check out the library of a wild range of color palettes here)
center — takes a float to center the colormap; if no cmap specified, will change the colors in the default colormap; if set to True — it changes all the colors of the colormap to blues
annot — when set to True, the correlation values become visible on the colored cells
cbar — when set to False, the colorbar (that serves as a legend) disappears

# Increase the size of the heatmap.plt.figure(figsize=(16, 6))# Store heatmap object in a variable to easily access it when you want to include more features (such as title).
# Set the range of values to be displayed on the colormap from -1 to 1, and set the annotation to True to display the correlation values on the heatmap.
heatmap = sns.heatmap(dataframe.corr(), vmin=-1, vmax=1, annot=True)# Give a title to the heatmap. Pad defines the distance of the title from the top of the heatmap.heatmap.set_title('Correlation Heatmap', fontdict={'fontsize':12}, pad=12);

Một bảng màu phân kỳ có màu khác nhau rõ rệt ở hai đầu của phạm vi giá trị với điểm trung bình nhợt nhạt, gần như không màu, hoạt động tốt hơn nhiều với các bản đồ nhiệt tương quan so với Colormap mặc định. Trong khi minh họa tuyên bố này, hãy để thêm một chi tiết nhỏ: Cách lưu bản đồ nhiệt vào tệp PNG với tất cả các nhãn X- và Y- (Xticklabels và Yticklabels) có thể nhìn thấy.diverging color palette that has markedly different colors at the two ends of the value-range with a pale, almost colorless midpoint, works much better with correlation heatmaps than the default colormap. While illustrating this statement, let’s add one more little detail: how to save a heatmap to a png file with all the x- and y- labels (xticklabels and yticklabels) visible.

plt.figure(figsize=(16, 6))
heatmap = sns.heatmap(dataframe.corr(), vmin=-1, vmax=1, annot=True, cmap='BrBG')
heatmap.set_title('Correlation Heatmap', fontdict={'fontsize':18}, pad=12);
# save heatmap as .png file
# dpi - sets the resolution of the saved image in dots/inches
# bbox_inches - when set to 'tight' - does not allow the labels to be cropped
plt.savefig('heatmap.png', dpi=300, bbox_inches='tight')

Mối tương quan mạnh hơn ở cả hai đầu của quang phổ bật ra trong mối tương quan tối hơn, yếu hơn trong các sắc thái sáng hơn.

Tương quan hình tam giác

Hãy xem bất kỳ bản đồ nhiệt tương quan ở trên. Nếu bạn cắt đi một nửa của nó dọc theo đường chéo được đánh dấu bằng 1-S, bạn sẽ không mất bất kỳ thông tin nào. Sau đó, hãy để cắt bản đồ nhiệt làm đôi, và chỉ giữ hình tam giác dưới.

Cuộc tranh luận về mặt nạ của Seaborn Heatmap có ích khi chúng tôi muốn bao gồm một phần của bản đồ nhiệt.mask’ argument comes in handy when we want to cover part of the heatmap.

Mặt nạ - lấy một mảng boolean hoặc một khung dữ liệu làm đối số; Khi được xác định, các ô trở nên vô hình đối với các giá trị trong đó mặt nạ là đúng — takes a boolean array or a dataframe as an argument; when defined, cells become invisible for values where the mask is True

Chúng ta hãy sử dụng hàm NP.TRIU () để cách ly tam giác trên của ma trận trong khi biến tất cả các giá trị trong tam giác dưới thành 0. (hàm np.tril () sẽ làm tương tự, chỉ đối với tam giác dưới.) Sử dụng hàm np.ones_like () sẽ thay đổi tất cả các giá trị bị cô lập thành 1.

np.triu(np.ones_like(dataframe.corr()))

Khi chúng tôi đặt kiểu dữ liệu thành ‘boolean, tất cả 1 biến thành true, tất cả 0 thành sai .________ 6

Tương quan của các biến độc lập với biến phụ thuộc

Tuy nhiên, thông thường, những gì chúng ta muốn tạo, là một bản đồ màu cho thấy sức mạnh của mối tương quan giữa mọi biến độc lập mà chúng ta muốn đưa vào mô hình của chúng ta và biến phụ thuộc.

Mã sau đây trả về mối tương quan của tất cả các tính năng với ‘giá bán, một biến phụ thuộc, duy nhất, được sắp xếp theo giá bán hàng theo cách giảm dần.

dataframe.corr()[['Sale Price']].sort_values(by='Sale Price', ascending=False)

Hãy để sử dụng nó làm dữ liệu trong bản đồ nhiệt của chúng tôi.

plt.figure(figsize=(8, 12))heatmap = sns.heatmap(dataframe.corr()[['Sale Price']].sort_values(by='Sale Price', ascending=False), vmin=-1, vmax=1, annot=True, cmap='BrBG')heatmap.set_title('Features Correlating with Sales Price', fontdict={'fontsize':18}, pad=16);

Tôi hy vọng bạn đã tìm thấy những gì bạn đang tìm kiếm trong bài viết này.