Tìm cách tạo ra một ma trận hiệp phương sai bằng Python? Show Nếu vậy, bạn sẽ thấy cách tạo ra một ma trận như vậy bằng cả Numpy và Pandas. Bước 1: Thu thập dữ liệuĐể bắt đầu, bạn sẽ cần thu thập dữ liệu sẽ được sử dụng cho ma trận hiệp phương sai. Đối với các mục đích trình diễn, hãy để sử dụng dữ liệu sau đây về 3 biến:
Bước 2: Nhận ma trận hiệp phương sai dân số bằng cách sử dụng PythonĐể có được ma trận hiệp phương sai dân số (dựa trên N), bạn sẽ cần phải đặt sự thiên vị thành đúng trong mã dưới đây. Đây là mã Python hoàn chỉnh để lấy ma trận hiệp phương sai dân số bằng cách sử dụng gói Numpy: import numpy as np A = [45, 37, 42, 35, 39] B = [38, 31, 26, 28, 33] C = [10, 15, 17, 21, 12] data = np.array([A, B, C]) cov_matrix = np.cov(data, bias=True) print(cov_matrix) Chạy mã và bạn sẽ nhận được ma trận sau:
Bước 3: Nhận biểu diễn trực quan của ma trậnBạn có thể sử dụng các gói Seaborn và Matplotlib để đại diện trực quan ma trận hiệp phương sai. Đây là mã hoàn chỉnh mà bạn có thể áp dụng trong Python: import numpy as np import seaborn as sn import matplotlib.pyplot as plt A = [45, 37, 42, 35, 39] B = [38, 31, 26, 28, 33] C = [10, 15, 17, 21, 12] data = np.array([A, B, C]) cov_matrix = np.cov(data,bias=True) sn.heatmap(cov_matrix, annot=True, fmt='g') plt.show() Xuất phát ma trận hiệp phương sai mẫuĐể có được hiệp phương sai mẫu (dựa trên N-1), bạn sẽ cần phải đặt sai lệch thành sai trong mã bên dưới. Đây là mã dựa trên gói Numpy: import numpy as np A = [45, 37, 42, 35, 39] B = [38, 31, 26, 28, 33] C = [10, 15, 17, 21, 12] data = np.array([A, B, C]) covMatrix = np.cov(data, bias=False) print(covMatrix) Và đây là ma trận mà bạn sẽ nhận được:
Bạn cũng có thể sử dụng gói Pandas để có được ma trận hiệp phương sai mẫu. Sau đó, bạn có thể áp dụng mã sau bằng Pandas: import pandas as pd data = {'A': [45, 37, 42, 35, 39], 'B': [38, 31, 26, 28, 33], 'C': [10, 15, 17, 21, 12] } df = pd.DataFrame(data) cov_matrix = pd.DataFrame.cov(df) print(cov_matrix) Bạn có thể nhận được cùng một ma trận như được bắt nguồn bởi Numpy:
Cuối cùng, bạn có thể đại diện trực quan ma trận hiệp phương sai bằng cách sử dụng các gói SeaBorn và Matplotlib: import pandas as pd import seaborn as sn import matplotlib.pyplot as plt data = {'A': [45, 37, 42, 35, 39], 'B': [38, 31, 26, 28, 33], 'C': [10, 15, 17, 21, 12] } df = pd.DataFrame(data) cov_matrix = pd.DataFrame.cov(df) sn.heatmap(cov_matrix, annot=True, fmt='g') plt.show() Bạn cũng có thể muốn kiểm tra nguồn sau giải thích các bước đầy đủ để tạo ma trận nhầm lẫn bằng Python. Ngoài ra, bạn có thể kiểm tra hướng dẫn này cho các bước để tạo ma trận tương quan trong Python. ________ 12 ________ 13 (m, y = none, rowvar = true(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=None)[source]¶ Ước tính một ma trận hiệp phương sai, dữ liệu và trọng số được đưa ra. Hiệp phương sai chỉ ra mức độ mà hai biến khác nhau. Nếu chúng ta kiểm tra các mẫu n chiều, x = [x_1, x_2, ... x_n]^t, thì phần tử ma trận hiệp phương sai c_ {ij} là hiệp phương sai của x_i và x_j. Phần tử C_ {ii} là phương sai của x_i.X = [x_1, x_2, ... x_N]^T, then the covariance matrix element C_{ij} is the covariance of x_i and x_j. The element C_{ii} is the variance of x_i. Xem các ghi chú cho một phác thảo của thuật toán.
Xem thêm import numpy as np import seaborn as sn import matplotlib.pyplot as plt A = [45, 37, 42, 35, 39] B = [38, 31, 26, 28, 33] C = [10, 15, 17, 21, 12] data = np.array([A, B, C]) cov_matrix = np.cov(data,bias=True) sn.heatmap(cov_matrix, annot=True, fmt='g') plt.show()3 Ma trận hiệp phương sai Ghi chú Giả sử rằng các quan sát nằm trong các cột của mảng quan sát M và cho import numpy as np import seaborn as sn import matplotlib.pyplot as plt A = [45, 37, 42, 35, 39] B = [38, 31, 26, 28, 33] C = [10, 15, 17, 21, 12] data = np.array([A, B, C]) cov_matrix = np.cov(data,bias=True) sn.heatmap(cov_matrix, annot=True, fmt='g') plt.show()4 và import numpy as np import seaborn as sn import matplotlib.pyplot as plt A = [45, 37, 42, 35, 39] B = [38, 31, 26, 28, 33] C = [10, 15, 17, 21, 12] data = np.array([A, B, C]) cov_matrix = np.cov(data,bias=True) sn.heatmap(cov_matrix, annot=True, fmt='g') plt.show()5 cho sự ngắn gọn. Các bước để tính toán hiệp phương sai có trọng số như sau: >>> w = f * a >>> v1 = np.sum(w) >>> v2 = np.sum(w * a) >>> m -= np.sum(m * w, axis=1, keepdims=True) / v1 >>> cov = np.dot(m * w, m.T) * v1 / (v1**2 - ddof * v2) Lưu ý rằng khi import numpy as np import seaborn as sn import matplotlib.pyplot as plt A = [45, 37, 42, 35, 39] B = [38, 31, 26, 28, 33] C = [10, 15, 17, 21, 12] data = np.array([A, B, C]) cov_matrix = np.cov(data,bias=True) sn.heatmap(cov_matrix, annot=True, fmt='g') plt.show()6, hệ số chuẩn hóa import numpy as np import seaborn as sn import matplotlib.pyplot as plt A = [45, 37, 42, 35, 39] B = [38, 31, 26, 28, 33] C = [10, 15, 17, 21, 12] data = np.array([A, B, C]) cov_matrix = np.cov(data,bias=True) sn.heatmap(cov_matrix, annot=True, fmt='g') plt.show()7 đi qua import numpy as np import seaborn as sn import matplotlib.pyplot as plt A = [45, 37, 42, 35, 39] B = [38, 31, 26, 28, 33] C = [10, 15, 17, 21, 12] data = np.array([A, B, C]) cov_matrix = np.cov(data,bias=True) sn.heatmap(cov_matrix, annot=True, fmt='g') plt.show()8 như bình thường. Ví dụ Hãy xem xét hai biến, x_0 và x_1, tương quan hoàn hảo, nhưng theo hướng ngược lại:x_0 and x_1, which correlate perfectly, but in opposite directions: >>> x = np.array([[0, 2], [1, 1], [2, 0]]).T >>> x array([[0, 1, 2], [2, 1, 0]]) Lưu ý cách x_0 tăng trong khi x_1 giảm. Ma trận hiệp phương sai cho thấy điều này rõ ràng:x_0 increases while x_1 decreases. The covariance matrix shows this clearly: 0Lưu ý rằng phần tử C_ {0,1}, hiển thị mối tương quan giữa X_0 và X_1, là âm.C_{0,1}, which shows the correlation between x_0 and x_1, is negative. Hơn nữa, lưu ý cách kết hợp x và y: 1 |