Làm cách nào tôi có thể kiểm tra mối tương quan giữa các tính năng và biến mục tiêu?


15

Tôi đang cố gắng xây dựng một Regressionmô hình và tôi đang tìm cách để kiểm tra xem liệu có bất kỳ mối tương quan nào giữa các tính năng và các biến mục tiêu không?

Đây là mẫu của tôi dataset

     Loan_ID    Gender  Married Dependents  Education Self_Employed ApplicantIncome\    

0   LP001002    Male    No         0        Graduate      No            5849    
1   LP001003    Male    Yes        1        Graduate      No            4583    
2   LP001005    Male    Yes        0        Graduate     Yes            3000    
3   LP001006    Male    Yes        0        Not Graduate  No            2583    
4   LP001008    Male    No         0        Graduate      No            6000    

CoapplicantIncome  LoanAmount   Loan_Amount_Term  Credit_History Area Loan_Status
      0.0               123          360.0            1.0        Urban     Y
      1508.0          128.0          360.0            1.0        Rural     N
      0.0              66.0          360.0            1.0        Urban     Y
      2358.0          120.0          360.0            1.0        Urban     Y
      0.0             141.0          360.0            1.0        Urban     Y

Tôi đang cố gắng dự đoán LoanAmountcột dựa trên các tính năng có sẵn ở trên.

Tôi chỉ muốn xem liệu có mối tương quan giữa các tính năng và biến mục tiêu hay không. Tôi đã thử LinearRegression, GradientBoostingRegressorvà tôi hầu như không nhận được độ chính xác xung quanh 0.30 - 0.40%.

Bất kỳ đề xuất về thuật toán, params vv mà tôi nên sử dụng để dự đoán tốt hơn?


Có một chức năng đặc biệt cho điều này trong R?
alkanschtein

Bạn có thể chỉ cần kiểm tra hệ số pearson. trong đó r = 1 có nghĩa là một mối tương quan tích cực hoàn hảo và r = -1 có nghĩa là một mối tương quan tiêu cực hoàn hảo ..
zik augustus

Câu trả lời:


11

Dữ liệu của bạn có thể được đưa vào một DataFrame của gấu trúc bằng cách sử dụng

import pandas as pd
data = {'Loan ID': ['LP001002', 'LP001003', 'LP001005', 'LP001006', 'LP001008'],
        'Married': ['No', 'Yes', 'Yes', 'Yes', 'No'],
        'Dependents': [0, 1, 0, 0, 0],
        'Education': ['Graduate', 'Graduate', 'Graduate', 'Not Graduate', 'Graduate'],
        'Self_Employed': ['No', 'No', 'Yes', 'No', 'No'],
        'Income': [5849, 4583, 3000, 2583, 6000],
        'Coapplicant Income': [0, 1508, 0, 2358, 0],
        'LoanAmount': [123, 128, 66, 120, 141],
        'Area': ['Urban', 'Rural', 'Urban', 'Urban', 'Urban'],
        'Loan Status': ['Y', 'N', 'Y', 'Y', 'Y']} 
df = pd.DataFrame(data)

Bây giờ để có được một mối tương quan, chúng ta cần chuyển đổi các tính năng phân loại của chúng tôi sang các tính năng số. Tất nhiên việc lựa chọn thứ tự sẽ ảnh hưởng đến mối tương quan nhưng may mắn là tất cả các danh mục của chúng tôi dường như là nhị phân. Nếu đây không phải là trường hợp bạn sẽ cần phải đặt ra một thứ tự tùy chỉnh.

df = pd.DataFrame(data)
df['Married'] =df['Married'].astype('category').cat.codes
df['Education'] =df['Education'].astype('category').cat.codes
df['Self_Employed'] =df['Self_Employed'].astype('category').cat.codes
df['Area'] =df['Area'].astype('category').cat.codes
df['Loan Status'] =df['Loan Status'].astype('category').cat.codes

Bây giờ chúng ta có thể có được mối tương quan giữa 'LoanAmount' và tất cả các tính năng khác.

df[df.columns[1:]].corr()['LoanAmount'][:]

nhập mô tả hình ảnh ở đây


Bây giờ sử dụng một số máy học trên dữ liệu này không có khả năng làm việc. Không có đủ dữ liệu để trích xuất một số thông tin liên quan giữa số lượng lớn các tính năng của bạn và số tiền cho vay.

Bạn cần ít nhất 10 lần so với các tính năng để mong có được kết quả tốt.


Để chỉ có được mối tương quan giữa một tính năng và một tập hợp con các tính năng bạn có thể làm

df[['Income', 'Education', 'LoanAmount']].corr()['LoanAmount'][:]

Điều này sẽ lấy một tập hợp con của DataFrame và sau đó áp dụng hàm Corr () giống như trên. Đảm bảo rằng tập hợp con của các cột được chọn bao gồm cột mà bạn muốn tính toán tương quan, trong ví dụ này là 'LoanAmount'.


Có thể chọn những tính năng cần giữ khi xem xét mối tương quan của các tính năng?
user_6394

@ user2485, tôi đã thêm vào câu trả lời liên quan đến câu hỏi của bạn.
JahKnows

Hân hạnh! cho chúng tôi biết nếu những câu hỏi khác xuất hiện
JahKnows

@JabKnows Chỉ cần một nghi ngờ. Tôi có cần phải mở rộng các giá trị tính năng của tôi. Ý tôi là tôi nên sử dụng standardscalerhay min_max_scalar. Tôi muốn làm một nhiệm vụ phân loại.
user_6394

1
Nó phụ thuộc vào thuật toán bạn chọn. Một số yêu cầu nó khác, bạn cần kiểm tra thuật toán. Đó là tốt tuy nhiên để giữ quy mô của các tính năng khác nhau tương tự.
JahKnows

7

Phương thức trong Python

Một cách để kiểm tra mối tương quan của mọi tính năng với biến mục tiêu là chạy mã:

# Your data should be a pandas dataframe for this example
import pandas
yourdata = ...
corr_matrix = yourdata.corr()
print(corr_matrix["your_target_variable"].sort_values(ascending=False))

Đầu ra tương quan sau đây sẽ liệt kê tất cả các biến và mối tương quan của chúng với biến mục tiêu. Các mối tương quan tiêu cực có nghĩa là khi biến mục tiêu giảm giá trị, biến tính năng tăng giá trị. (Tuyến tính)

Để vẽ biểu đồ tương quan trên các ô thay vào đó, hãy chạy mã:

# make sure to specify some features that you might want to focus on or the plots might be too big
from pandas.tools.plotting import scatter_matrix
attributes = [list of whatever features you want to plot against the target variable]
scatter_matrix(yourdata[attributes], figsize=(12, 8))

Đối với figsizeđối số cho scatter_matrixhàm, nhập bất kỳ kích thước nào phù hợp nhất.


2

Bạn có thể sử dụng pandas.DataFrame.corrwith()chức năng để tìm mối tương quan:

df.drop(columns=['Loan ID']).corrwith(df['Loan Status'])

Tạo bộ dữ liệu

import pandas as pd
data = {'Loan ID': ['LP001002', 'LP001003', 'LP001005', 'LP001006', 'LP001008'],
        'Married': ['No', 'Yes', 'Yes', 'Yes', 'No'],
        'Dependents': [0, 1, 0, 0, 0],
        'Education': ['Graduate', 'Graduate', 'Graduate', 'Not Graduate', 'Graduate'],
        'Self_Employed': ['No', 'No', 'Yes', 'No', 'No'],
        'Income': [5849, 4583, 3000, 2583, 6000],
        'Coapplicant Income': [0, 1508, 0, 2358, 0],
        'LoanAmount': [123, 128, 66, 120, 141],
        'Area': ['Urban', 'Rural', 'Urban', 'Urban', 'Urban'],
        'Loan Status': ['Y', 'N', 'Y', 'Y', 'Y']} 
df = pd.DataFrame(data)

Chuyển đổi các biến phân loại thành số

df['Married'] =df['Married'].astype('category').cat.codes
df['Education'] =df['Education'].astype('category').cat.codes
df['Self_Employed'] =df['Self_Employed'].astype('category').cat.codes
df['Area'] =df['Area'].astype('category').cat.codes
df['Loan Status'] =df['Loan Status'].astype('category').cat.codes
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.