Hướng dẫn how to find highly correlated variables in python - cách tìm các biến có tương quan cao trong python

Mục tiêu công thức

Trong nhiều bộ dữ liệu, chúng tôi tìm thấy một số tính năng tương quan cao có nghĩa là một số phụ thuộc tuyến tính với các tính năng khác. Các tính năng này đóng góp rất ít hơn trong việc dự đoán đầu ra nhưng làm tăng chi phí tính toán.

Mã nguồn Python khoa học dữ liệu này thực hiện như sau: 1. Tính toán mối tương quan giữa các tính năng khác nhau. 2. Thả các tính năng tương quan cao để thoát khỏi lời nguyền về chiều. 3. Tương quan tuyến tính và phi tuyến tính.
1. Calculates correlation between different features.
2. Drops highly correlated features to escape curse of dimensionality.
3. Linear and non-linear correlation.

Vì vậy, chúng tôi phải tìm ra mối tương quan giữa các tính năng và loại bỏ các tính năng có hệ số tương quan lớn hơn một giới hạn nhất định.

Vì vậy, công thức này là một ví dụ ngắn về cách tìm mối tương quan giữa các tính năng và loại bỏ các tính năng tương quan cao.

Mục lục

  • Mục tiêu công thức
  • Bước 1 - Nhập thư viện
  • Bước 2 - Thiết lập dữ liệu
  • Bước 3 - Tạo ma trận tương quan và chọn ma trận trigular trên
  • Bước 5 - Thả cột với mối tương quan cao
  • Bước 6 - Phân tích đầu ra

Hãy đến gần hơn với giấc mơ trở thành một nhà khoa học dữ liệu với hơn 70 dự án ML từ đầu đến cuối đã được giải quyếtEnd-to-End ML Projects

Bước 1 - Nhập thư viện

import pandas as pd import numpy as np from sklearn import datasets

Bước 2 - Thiết lập dữ liệu

Bước 2 - Thiết lập dữ liệu

Bước 3 - Tạo ma trận tương quan và chọn ma trận trigular trên

Bước 3 - Tạo ma trận tương quan và chọn ma trận trigular trên

Bước 5 - Thả cột với mối tương quan cao

Bước 6 - Phân tích đầu ra

Bước 5 - Thả cột với mối tương quan cao

Bước 6 - Phân tích đầu ra

Bước 6 - Phân tích đầu ra

Hãy đến gần hơn với giấc mơ trở thành một nhà khoa học dữ liệu với hơn 70 dự án ML từ đầu đến cuối đã được giải quyết

     0    1    2    3
0  5.1  3.5  1.4  0.2
1  4.9  3.0  1.4  0.2
2  4.7  3.2  1.3  0.2
3  4.6  3.1  1.5  0.2
4  5.0  3.6  1.4  0.2

          0         1         2         3
0  1.000000  0.117570  0.871754  0.817941
1  0.117570  1.000000  0.428440  0.366126
2  0.871754  0.428440  1.000000  0.962865
3  0.817941  0.366126  0.962865  1.000000

    0        1         2         3
0 NaN  0.11757  0.871754  0.817941
1 NaN      NaN  0.428440  0.366126
2 NaN      NaN       NaN  0.962865
3 NaN      NaN       NaN       NaN

[3]

     0    1    2
0  5.1  3.5  1.4
1  4.9  3.0  1.4
2  4.7  3.2  1.3
3  4.6  3.1  1.5
4  5.0  3.6  1.4

Câu hỏi ở đây đề cập đến một bộ dữ liệu khổng lồ. Tuy nhiên, tất cả các câu trả lời tôi thấy đang xử lý DataFrames. Tôi trình bày một câu trả lời cho một ma trận thưa thớt Scipy chạy song song. Thay vì trả lại một ma trận tương quan khổng lồ, điều này trả về mặt nạ tính năng của các trường để giữ sau khi kiểm tra tất cả các trường cho cả mối tương quan Pearson tích cực và tiêu cực.

Tôi cũng cố gắng giảm thiểu các tính toán bằng chiến lược sau:

  • Xử lý từng cột
  • Bắt đầu ở cột hiện tại + 1 và tính toán tương quan di chuyển sang phải.
  • Đối với bất kỳ ABS (tương quan)> = ngưỡng, hãy đánh dấu cột hiện tại để loại bỏ và tính toán không có mối tương quan nào nữa.
  • Thực hiện các bước này cho mỗi cột trong tập dữ liệu ngoại trừ lần cuối cùng.

Điều này có thể được tăng cường hơn nữa bằng cách giữ một danh sách các cột toàn cầu được đánh dấu để loại bỏ và bỏ qua các tính toán tương quan thêm cho các cột như vậy, vì các cột sẽ thực thi theo thứ tự. Tuy nhiên, tôi không biết đủ về điều kiện chủng tộc ở Python để thực hiện tối nay.

Trả về một mặt nạ cột rõ ràng sẽ cho phép mã xử lý các bộ dữ liệu lớn hơn nhiều so với trả về toàn bộ ma trận tương quan.

Kiểm tra từng cột bằng cách sử dụng chức năng này:

def get_corr_row(idx_num, sp_mat, thresh):
    # slice the column at idx_num
    cols = sp_mat.shape[1]
    x = sp_mat[:,idx_num].toarray().ravel()
    start = idx_num + 1
    
    # Now slice each column to the right of idx_num   
    for i in range(start, cols):
        y = sp_mat[:,i].toarray().ravel()
        # Check the pearson correlation
        corr, pVal = pearsonr(x,y)
        # Pearson ranges from -1 to 1.
        # We check both positive and negative correlations >= thresh using abs(corr)
        if abs(corr) >= thresh:
            # stop checking after finding the 1st correlation > thresh   
            return False
            # Mark column at idx_num for removal in the mask  
    return True  
    

Chạy kiểm tra tương quan cấp cột song song:

from joblib import Parallel, delayed  
import multiprocessing


def Get_Corr_Mask(sp_mat, thresh, n_jobs=-1):
    
    # we must make sure the matrix is in csc format 
    # before we start doing all these column slices!  
    sp_mat = sp_mat.tocsc()
    cols = sp_mat.shape[1]
    
    if n_jobs == -1:
        # Process the work on all available CPU cores
        num_cores = multiprocessing.cpu_count()
    else:
        # Process the work on the specified number of CPU cores
        num_cores = n_jobs

    # Return a mask of all columns to keep by calling get_corr_row() 
    # once for each column in the matrix     
    return Parallel(n_jobs=num_cores, verbose=5)(delayed(get_corr_row)(i, sp_mat, thresh)for i in range(cols))

Sử dụng chung:

#Get the mask using your sparse matrix and threshold.
corr_mask = Get_Corr_Mask(X_t_fpr, 0.95) 

# Remove features that are >= 95% correlated
X_t_fpr_corr = X_t_fpr[:,corr_mask]

Làm thế nào để tôi tìm thấy các biến tương quan nhất trong Python?

Làm thế nào để bạn tìm thấy các biến tương quan cao trong Python ?..
Mục tiêu công thức ..
Bước 1 - Nhập thư viện ..
Bước 2 - Thiết lập dữ liệu ..
Bước 3 - Tạo ma trận tương quan và chọn ma trận trigular trên ..
Bước 5 - Thả cột với tương quan cao ..
Bước 6 - Phân tích đầu ra ..

Làm thế nào để bạn tìm thấy các biến tương quan cao?

Nếu giá trị là 0, hai biến độc lập và không có mối tương quan. Nếu biện pháp này cực kỳ gần với một trong những giá trị này, nó chỉ ra mối quan hệ tuyến tính và tương quan cao với nhau. Điều này có nghĩa là một sự thay đổi trong một biến được liên kết với một thay đổi đáng kể trong các biến khác.If the measure is extremely close to one of these values, it indicates a linear relationship and highly correlated with each other. This means a change in one variable is associated with a significant change in other variables.

Làm thế nào để bạn kiểm tra xem một biến có tương quan trong Python không?

Đ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ó.calculating a matrix of the relationships between each pair of variables in the dataset. The result is a symmetric matrix called a correlation matrix with a value of 1.0 along the diagonal as each column always perfectly correlates with itself.

Làm thế nào để bạn tìm thấy mối tương quan của một bộ dữ liệu lớn trong Python?

Sử dụng phương thức Corr () bằng phương pháp tương quan PANDAS, chúng ta có thể thấy các mối tương quan cho tất cả các cột số trong khung dữ liệu.Vì đây là một phương pháp, tất cả những gì chúng ta phải làm là gọi nó trên DataFrame.Giá trị trả về sẽ là một khung dữ liệu mới hiển thị mỗi tương quan. Using the Pandas correlation method we can see correlations for all numerical columns in the DataFrame. Since this is a method, all we have to do is call it on the DataFrame. The return value will be a new DataFrame showing each correlation.