Tương quan là một dấu hiệu về những thay đổi giữa hai biến. Trong các chương trước của chúng tôi, chúng tôi đã thảo luận về các hệ số tương quan Pearson, và tầm quan trọng của mối tương quan. Chúng ta có thể vẽ ma trận tương quan để hiển thị biến nào có mối tương quan cao hoặc thấp đối với biến khác.
Thí dụ
Trong ví dụ sau, tập lệnh Python sẽ tạo ra và âm mưu ma trận tương quan cho bộ dữ liệu tiểu đường Ấn Độ PIMA. Nó có thể được tạo ra với chức năng trợ giúp của Corr [] trên Pandas DataFrame và được vẽ với sự trợ giúp của pyplot.
from matplotlib import pyplot from pandas import read_csv import numpy Path = r"C:\pima-indians-diabetes.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] data = read_csv[Path, names = names] correlations = data.corr[] fig = pyplot.figure[] ax = fig.add_subplot[111] cax = ax.matshow[correlations, vmin=-1, vmax=1] fig.colorbar[cax] ticks = numpy.arange[0,9,1] ax.set_xticks[ticks] ax.set_yticks[ticks] ax.set_xticklabels[names] ax.set_yticklabels[names] pyplot.show[]
Đầu ra
Từ đầu ra ở trên của ma trận tương quan, chúng ta có thể thấy rằng nó là đối xứng, tức là phía dưới bên trái giống như trên cùng bên phải. Nó cũng được quan sát thấy rằng mỗi biến có mối tương quan tích cực với nhau.
Machine_Learning_With_Python_Undermed_Data_With_Visualization.htm
Ma trận tương quan
Một ma trận là một mảng các số được sắp xếp theo hàng và cột.
Một ma trận tương quan chỉ đơn giản là một bảng hiển thị các hệ số tương quan giữa các biến.
Ở đây, các biến được biểu diễn trong hàng đầu tiên và trong cột đầu tiên:
Bảng trên đã sử dụng dữ liệu từ bộ dữ liệu sức khỏe đầy đủ.
Observations:
- Chúng tôi quan sát thấy rằng thời lượng và calo_burnage có liên quan chặt chẽ, với hệ số tương quan là 0,89. Điều này có ý nghĩa khi chúng ta tập luyện càng lâu, chúng ta càng đốt cháy nhiều calo
- Chúng tôi quan sát thấy rằng hầu như không có mối quan hệ tuyến tính giữa trung bình_pulse và calo_burnage [hệ số tương quan là 0,02]
- Chúng ta có thể kết luận rằng trung bình_pulse không ảnh hưởng đến calo_burnage không? Không. Chúng tôi sẽ quay lại để trả lời câu hỏi này sau!
Ma trận tương quan trong Python
Chúng ta có thể sử dụng hàm corr[]
trong Python để tạo ma trận tương quan. Chúng tôi cũng sử dụng hàm round[]
để làm tròn đầu ra vào hai số thập phân:
Thí dụ
Corm
print[Corr_Matrix]
Hãy tự mình thử »
Output:
Sử dụng một bản đồ nhiệt
Chúng ta có thể sử dụng bản đồ nhiệt để hình dung mối tương quan giữa các biến:
Hệ số tương quan càng gần với 1, hình vuông càng xanh.
Hệ số tương quan càng gần -1, các hình vuông hơn.
Sử dụng Seaborn để tạo bản đồ nhiệt
Chúng ta có thể sử dụng Thư viện Seaborn để tạo bản đồ nhiệt tương quan [Seaborn là một thư viện trực quan dựa trên matplotlib]:
Thí dụ
Corm
import seaborn as sns
Hãy tự mình thử »
Sử dụng một bản đồ nhiệt
correlation_full_health,
vmin=-1, vmax=1, center=0,
cmap=sns.diverging_palette[50, 500, n=500],
square=True
]
plt.show[]
Hãy tự mình thử »
Sử dụng một bản đồ nhiệt
- Chúng ta có thể sử dụng bản đồ nhiệt để hình dung mối tương quan giữa các biến:
- Hệ số tương quan càng gần với 1, hình vuông càng xanh.
- Hệ số tương quan càng gần -1, các hình vuông hơn.
- Sử dụng Seaborn để tạo bản đồ nhiệt
- Chúng ta có thể sử dụng Thư viện Seaborn để tạo bản đồ nhiệt tương quan [Seaborn là một thư viện trực quan dựa trên matplotlib]:
- Nhập matplotlib.pyplot dưới dạng pltimport seeborn như SNS
Bước 1: Thu thập dữ liệu. ....
- Bước 2: Tạo một khung dữ liệu bằng gấu trúc. .... larger the magnitude, stronger the correlation.
- Bước 3: Tạo một ma trận tương quan bằng gấu trúc. .... if positive, there is a regular correlation. If negative, there is an inverse correlation.
Bước 4 [Tùy chọn]: Nhận biểu diễn trực quan của ma trận tương quan bằng cách sử dụng Seaborn và Matplotlib ..
- Làm thế nào để bạn tìm thấy hệ số tương quan của một ma trận trong Python?
- Hệ số tương quan Pearson có thể được tính toán trong Python bằng phương pháp CorrCoef [] từ Numpy. Đầu vào cho hàm này thường là một ma trận, nói về kích thước MXN, trong đó: mỗi cột đại diện cho các giá trị của một biến ngẫu nhiên. Mỗi hàng đại diện cho một mẫu duy nhất của n biến ngẫu nhiên.
Tại sao chúng ta cần ma trận tương quan trong học máy?
Một ma trận tương quan là một bảng cho thấy các hệ số tương quan giữa các biến. Mỗi ô trong bảng cho thấy mối tương quan giữa hai biến. Một ma trận tương quan được sử dụng để tóm tắt dữ liệu, như là một đầu vào vào phân tích nâng cao hơn và là một chẩn đoán cho các phân tích nâng cao.
Ví dụ 1: Giả sử một cửa hàng kem theo dõi tổng doanh số của kem so với nhiệt độ vào ngày hôm đó.Suppose an ice cream shop keeps track of total sales of ice creams versus the temperature on that day.
Python3
import
numpy as np
x
[[1. 0.95750662] [0.95750662 1. ]]0
[[1. 0.95750662] [0.95750662 1. ]]1
[[1. 0.95750662] [0.95750662 1. ]]2
[[1. 0.95750662] [0.95750662 1. ]]3
[[1. 0.95750662] [0.95750662 1. ]]4
[[1. 0.95750662] [0.95750662 1. ]]3
[[1. 0.95750662] [0.95750662 1. ]]6
[[1. 0.95750662] [0.95750662 1. ]]3
[[1. 0.95750662] [0.95750662 1. ]]8
[[1. 0.95750662] [0.95750662 1. ]]3__
Các
Dataframe is : x y z 0 45 38 10 1 37 31 15 2 42 26 17 3 35 28 21 4 39 33 12 Correlation matrix is : x y z x 1.000000 0.518457 -0.701886 y 0.518457 1.000000 -0.860941 z -0.701886 -0.860941 1.0000007
[[1. 0.95750662] [0.95750662 1. ]]0
[[1. 0.95750662] [0.95750662 1. ]]1
Correlation Matrix is : AVG temp C Ice Cream production AVG temp C 1.000000 0.718032 Ice Cream production 0.718032 1.0000000
[[1. 0.95750662] [0.95750662 1. ]]3____422
[[1. 0.5298089] [0.5298089 1. ]]6
corr[]
3[[1. 0.95750662] [0.95750662 1. ]]3
corr[]
5[[1. 0.95750662] [0.95750662 1. ]]3
corr[]
7[[1. 0.95750662] [0.95750662 1. ]]3
corr[]
9[[1. 0.95750662] [0.95750662 1. ]]3
round[]
1[[1. 0.95750662] [0.95750662 1. ]]3
round[]
3round[]
4round[]
5
[[1. 0.95750662] [0.95750662 1. ]]0
round[]
7round[]
8round[]
9
Đầu ra
[[1. 0.95750662] [0.95750662 1. ]]
Từ ma trận trên, nếu chúng ta thấy ô [0,1] và [1,0] đều có cùng giá trị bằng 0,95750662 khiến chúng ta kết luận rằng bất cứ khi nào nhiệt độ cao, chúng ta có doanh số cao hơn.
Ví dụ 2: Giả sử chúng ta được cho mức glucose ở cậu bé tương ứng với tuổi. Tìm mối tương quan giữa tuổi [x] và mức glucose trong cơ thể [y].Suppose we are given glucose level in boy respective to age. Find correlation between age[x] and glucose level in body[y].
Python3
import
numpy as np
x
[[1. 0.95750662] [0.95750662 1. ]]0
[[1. 0.95750662] [0.95750662 1. ]]1
[[1. 0.95750662] [0.95750662 1. ]]2
[[1. 0.95750662] [0.95750662 1. ]]3
[[1. 0.95750662] [0.95750662 1. ]]4
[[1. 0.95750662] [0.95750662 1. ]]3
[[1. 0.95750662] [0.95750662 1. ]]6
[[1. 0.95750662] [0.95750662 1. ]]3
[[1. 0.95750662] [0.95750662 1. ]]8
[[1. 0.95750662] [0.95750662 1. ]]3__
Các
round[]
5
[[1. 0.95750662] [0.95750662 1. ]]0
round[]
7round[]
8round[]
9
Đầu ra
[[1. 0.5298089] [0.5298089 1. ]]
Từ ma trận trên, nếu chúng ta thấy ô [0,1] và [1,0] đều có cùng giá trị bằng 0,95750662 khiến chúng ta kết luận rằng bất cứ khi nào nhiệt độ cao, chúng ta có doanh số cao hơn.
Ví dụ 2: Giả sử chúng ta được cho mức glucose ở cậu bé tương ứng với tuổi. Tìm mối tương quan giữa tuổi [x] và mức glucose trong cơ thể [y].
x
[[1. 0.95750662] [0.95750662 1. ]]0
[[1. 0.95750662] [0.95750662 1. ]]1
import
5[[1. 0.95750662] [0.95750662 1. ]]3
import
77____13import
9[[1. 0.95750662] [0.95750662 1. ]]3
numpy as np
1[[1. 0.95750662] [0.95750662 1. ]]3
numpy as np
3______13____855Dataframe is :
x y z
0 45 38 10
1 37 31 15
2 42 26 17
3 35 28 21
4 39 33 12
Correlation matrix is :
x y z
x 1.000000 0.518457 -0.701886
y 0.518457 1.000000 -0.860941
z -0.701886 -0.860941 1.000000
7[[1. 0.95750662]
[0.95750662 1. ]]
0 [[1. 0.95750662]
[0.95750662 1. ]]
1x
0[[1. 0.95750662]
[0.95750662 1. ]]
3x
2 ____13____94[[1. 0.95750662]
[0.95750662 1. ]]
3x
6[[1. 0.95750662]
[0.95750662 1. ]]
3x
8____13[[1. 0.95750662]
[0.95750662 1. ]]
00round[]
4
Python3
Từ ma trận tương quan ở trên, 0,5298089 hoặc 52,98% có nghĩa là biến có mối tương quan tích cực vừa phải.
Phương pháp 2: Tạo ma trận tương quan bằng Thư viện Pandas & NBSP;
[[1. 0.95750662] [0.95750662 1. ]]12
[[1. 0.95750662] [0.95750662 1. ]]13
[[1. 0.95750662] [0.95750662 1. ]]14
[[1. 0.95750662] [0.95750662 1. ]]15
[[1. 0.95750662] [0.95750662 1. ]]3
[[1. 0.95750662] [0.95750662 1. ]]17
[[1. 0.95750662] [0.95750662 1. ]]3
numpy as np
1[[1. 0.95750662] [0.95750662 1. ]]3
[[1. 0.95750662] [0.95750662 1. ]]21
[[1. 0.95750662] [0.95750662 1. ]]3
[[1. 0.95750662] [0.95750662 1. ]]23
Dataframe is : x y z 0 45 38 10 1 37 31 15 2 42 26 17 3 35 28 21 4 39 33 12 Correlation matrix is : x y z x 1.000000 0.518457 -0.701886 y 0.518457 1.000000 -0.860941 z -0.701886 -0.860941 1.0000006
Để tạo một ma trận tương quan cho một bộ dữ liệu nhất định, chúng tôi sử dụng phương thức Corr [] trên DataFrames.
[[1. 0.95750662] [0.95750662 1. ]]12
[[1. 0.95750662] [0.95750662 1. ]]39
[[1. 0.95750662] [0.95750662 1. ]]14
[[1. 0.95750662] [0.95750662 1. ]]41
[[1. 0.95750662] [0.95750662 1. ]]3
[[1. 0.95750662] [0.95750662 1. ]]43
[[1. 0.95750662] [0.95750662 1. ]]3
[[1. 0.95750662] [0.95750662 1. ]]45
[[1. 0.95750662] [0.95750662 1. ]]3
import
7[[1. 0.95750662] [0.95750662 1. ]]3
[[1. 0.95750662] [0.95750662 1. ]]49
round[]
4[[1. 0.95750662] [0.95750662 1. ]]51
Ví dụ 1:
round[]
8
[[1. 0.95750662] [0.95750662 1. ]]64
[[1. 0.95750662] [0.95750662 1. ]]65
[[1. 0.95750662] [0.95750662 1. ]]66
round[]
8
[[1. 0.95750662] [0.95750662 1. ]]68
import
[[1. 0.95750662] [0.95750662 1. ]]08
round[]
8
[[1. 0.95750662] [0.95750662 1. ]]64
[[1. 0.95750662] [0.95750662 1. ]]74
[[1. 0.95750662] [0.95750662 1. ]]66
round[]
8round[]
9
Output:Output:
Dataframe is : x y z 0 45 38 10 1 37 31 15 2 42 26 17 3 35 28 21 4 39 33 12 Correlation matrix is : x y z x 1.000000 0.518457 -0.701886 y 0.518457 1.000000 -0.860941 z -0.701886 -0.860941 1.000000
[[1. 0.95750662]
[0.95750662 1. ]]
09____10 [[1. 0.95750662]
[0.95750662 1. ]]
11
[[1. 0.95750662]
[0.95750662 1. ]]
12[[1. 0.95750662]
[0.95750662 1. ]]
26[[1. 0.95750662]
[0.95750662 1. ]]
14[[1. 0.95750662]
[0.95750662 1. ]]
28[[1. 0.95750662]
[0.95750662 1. ]]
3[[1. 0.95750662]
[0.95750662 1. ]]
30[[1. 0.95750662]
[0.95750662 1. ]]
3[[1. 0.95750662]
[0.95750662 1. ]]
32[[1. 0.95750662]
[0.95750662 1. ]]
3[[1. 0.95750662]
[0.95750662 1. ]]
34__
Python3
Từ ma trận tương quan ở trên, 0,5298089 hoặc 52,98% có nghĩa là biến có mối tương quan tích cực vừa phải.
Phương pháp 2: Tạo ma trận tương quan bằng Thư viện Pandas & NBSP;
round[]
8
[[1. 0.95750662] [0.95750662 1. ]]68
import
[[1. 0.95750662] [0.95750662 1. ]]08
round[]
8
[[1. 0.95750662] [0.95750662 1. ]]64
[[1. 0.95750662] [0.95750662 1. ]]92
[[1. 0.95750662] [0.95750662 1. ]]66
round[]
8round[]
9
Output:
Correlation Matrix is : AVG temp C Ice Cream production AVG temp C 1.000000 0.718032 Ice Cream production 0.718032 1.000000