Hướng dẫn correlation between numerical and categorical variable python - mối tương quan giữa python biến số và phân loại

Tham gia cộng đồng Dzone và có được trải nghiệm thành viên đầy đủ.

Tham gia miễn phí

Trước khi tạo bất kỳ mô hình học máy nào trên bộ dữ liệu bảng, thông thường chúng tôi kiểm tra xem có mối quan hệ giữa các biến độc lập và mục tiêu hay không. Điều này có thể được thực hiện bằng cách đo lường mối tương quan giữa hai biến. Trong Python, Pandas cung cấp một hàm, & nbsp; ________ 2, & nbsp; để tìm mối tương quan giữa các biến số., to find the correlation between numeric variables only.

Trong bài viết này, chúng ta sẽ xem làm thế nào để tìm ra mối tương quan giữa các biến phân loại và liên tục.

Trường hợp 1: Khi một biến độc lập chỉ có hai giá trị

Điểm tương quan biserial

Nếu một biến phân loại chỉ có hai giá trị (nghĩa là true/false), thì chúng ta có thể chuyển đổi nó thành một số & nbsp; kiểu dữ liệu (0 và 1). Vì nó trở thành một biến số, chúng ta có thể tìm ra mối tương quan bằng cách sử dụng chức năng & nbsp; ____ 2 & nbsp;

Chúng ta hãy tạo một khung dữ liệu sẽ bao gồm hai cột: loại nhân viên (trốngpe) & nbsp; và tiền lương.Employee Type (EmpType) and Salary.

Cố tình, chúng tôi sẽ chỉ định nhiều tiền lương hơn cho trốngPE1. Bằng cách này, chúng tôi sẽ nhận được một số mối tương quan giữa trống và tiền lương.

Tạo DataFrame với các thuộc tính sau:

  • Mức lương trung bình (trung bình) của & nbsp; ____ 4 & nbsp; là 60 với độ lệch chuẩn là năm.

  • Mức lương trung bình (trung bình) của & nbsp; ____ 5 & nbsp; là 50 với độ lệch chuẩn là năm. is 50 with a standard deviation of five.

import pandas as pd
import numpy as np

num1=np.random.normal(loc=60,scale=5,size=100)
df1=pd.DataFrame(num1,columns=['Salary'])
df1['Type']='EmpType1'

num2=np.random.normal(loc=50,scale=5,size=100)
df2=pd.DataFrame(num2,columns=['Salary'])
df2['Type']='EmpType2'


df=pd.concat([df1,df2],axis=0)
# Since Categorical variable 'Type' has only 2 values we will convert it into numeric (0 and 1) datatype.

df['TypeInt']=(df['Type']=='EmpType1').astype(int)
df.corr()

Đầu ra

LươngKiểu
Lương1 0.736262
Kiểu0.736262 1

Mối tương quan giữa rỗng và lương là 0,7. Vì vậy, chúng tôi có thể xác định nó có tương quan. & NBSP;

Trường hợp 2: Khi các biến độc lập có nhiều hơn hai giá trị

ANOVA (Phân tích phương sai)

Chúng tôi sẽ chỉ định nhiều tiền lương hơn cho & nbsp; ____ 4, mức lương trung bình cho & nbsp; ____ 5 và mức lương thấp cho & nbsp; ____ ____ 8. Bằng cách này, chúng tôi sẽ nhận được một số mối tương quan giữa trống và tiền lương.

  • Mức lương trung bình của & nbsp; ________ 4 & nbsp; là 90 với độ lệch chuẩn là năm.

  • Mức lương trung bình của & nbsp; ________ 5 & nbsp; là 70 với độ lệch chuẩn là năm.

  • Mức lương trung bình của & nbsp; ________ 8 & nbsp; là 50 với độ lệch chuẩn là năm. is 50 with a standard deviation of five.

num1=np.random.normal(loc=90,scale=5,size=100)
df1=pd.DataFrame(num1,columns=['Salary'])
df1['Type']='EmpType1'

num2=np.random.normal(loc=70,scale=5,size=100)
df2=pd.DataFrame(num2,columns=['Salary'])
df2['Type']='EmpType2'

num3=np.random.normal(loc=50,scale=5,size=100)
df3=pd.DataFrame(num3,columns=['Salary'])
df3['Type']='EmpType3'

df=pd.concat([df1,df2,df3],axis=0)

from scipy import stats

F, p = stats.f_oneway(df[df.Type=='EmpType1'].Salary,
                      df[df.Type=='EmpType2'].Salary,
                      df[df.Type=='EmpType3'].Salary)

print(F)

Đầu ra chúng tôi nhận được là: 1443.6261 & nbsp;

  • Vì mức lương trung bình của ba & nbsp; loại nhân viên là 90, 70 và 50 & nbsp; (với độ lệch chuẩn là năm) điểm F là 1444.F score is 1444.
  • Nếu mức lương trung bình của ba & nbsp; loại nhân viên là 60, 55, 50 điểm F là 86.F score is 86.
  • Và nếu mức lương trung bình & nbsp; của ba & nbsp; loại nhân viên là 51, 50, 49 (gần như giống nhau) thì điểm F sẽ gần với 0, & nbsp; tức là. Không có mối tương quan.F score will be close to 0, i.e. there's no correlation.
  • Điểm F lớn hơn & nbsp; giá trị càng cao thì tương quan sẽ càng cao.

Bạn có thể tải xuống và chạy đầy đủ mã từ liên kết này.

Tương quan (hình học dự án) Python (ngôn ngữ) Python (language)

Ý kiến ​​được thể hiện bởi những người đóng góp Dzone là của riêng họ.

Có ba phương pháp hình ảnh lớn để hiểu nếu một liên tục và phân loại có mối tương quan đáng kể-tương quan biserial điểm, hồi quy logistic và thử nghiệm Kruskal Wallis H. Hệ số tương quan Biserial Point là một trường hợp đặc biệt về hệ số tương quan của Pearson.

Kịch bản này có thể xảy ra khi bạn đang thực hiện hồi quy hoặc phân loại trong học máy.

  • Hồi quy: Biến đích là số và một trong những yếu tố dự đoán là phân loại: The target variable is numeric and one of the predictors is categorical
  • Phân loại: Biến mục tiêu là phân loại và một trong những yếu tố dự đoán theo số: The target variable is categorical and one of the predictors in numeric

Trong cả hai trường hợp này, sức mạnh của mối tương quan giữa các biến có thể được đo bằng thử nghiệm ANOVA.ANOVA test.

ANOVA là viết tắt của phân tích phương sai. Vì vậy, về cơ bản, các biện pháp thử nghiệm này nếu có bất kỳ sự khác biệt đáng kể nào giữa các phương tiện của các giá trị của biến số cho mỗi giá trị phân loại. Đây là một cái gì đó mà bạn cũng có thể hình dung bằng cách sử dụng cốt truyện hộp.

Các mục dưới đây phải được ghi nhớ về bài kiểm tra giả thuyết ANOVA

  • Giả thuyết Null (H0): Các biến không tương quan với nhau
  • Giá trị P: Xác suất của giả thuyết null là đúng
  • Chấp nhận giả thuyết null nếu giá trị p> 0,05. Có nghĩa là các biến không tương quan
  • Bác bỏ giả thuyết null nếu giá trị p

Trong ví dụ dưới đây, chúng tôi đang cố gắng đo lường nếu có bất kỳ mối tương quan nào giữa FurferType trên Carprices. Ở đây FuelType là một yếu tố dự đoán phân loại và Carprices là biến mục tiêu số.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

# Tạo dữ liệu mẫu

Nhập Pandas ASPDpandas aspd

ColumnNames=['FuelType','CarPrice']=['FuelType','CarPrice']

Datavalues ​​= [[& nbsp; & nbsp; 'xăng', & nbsp; & nbsp; 2000],=[[  'Petrol',   2000],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'xăng', & nbsp; & nbsp; 2100],[  'Petrol',   2100],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'xăng', & nbsp; & nbsp; 1900],[  'Petrol',   1900],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'xăng', & nbsp; & nbsp; 2150],[  'Petrol',   2150],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'xăng', & nbsp; & nbsp; 2100],[  'Petrol',   2100],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'xăng', & nbsp; & nbsp; 1900],[  'Petrol',   2200],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'xăng', & nbsp; & nbsp; 2150],[  'Petrol',   1950],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'xăng', & nbsp; & nbsp; 2200],[  'Diesel',   2500],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'xăng', & nbsp; & nbsp; 1950],[  'Diesel',   2700],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'diesel', & nbsp; & nbsp; 2500],[  'Diesel',   2900],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'diesel', & nbsp; & nbsp; 2700],[  'Diesel',   2850],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'diesel', & nbsp; & nbsp; 2900],[  'Diesel',   2600],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'xăng', & nbsp; & nbsp; 2200],[  'Diesel',   2500],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'xăng', & nbsp; & nbsp; 1950],[  'Diesel',   2700],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'diesel', & nbsp; & nbsp; 2500],[  'CNG',   1500],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'diesel', & nbsp; & nbsp; 2700],[  'CNG',   1400],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'diesel', & nbsp; & nbsp; 2900],[  'CNG',   1600],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'cng', & nbsp; & nbsp; 1650],[  'CNG',   1650],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'cng', & nbsp; & nbsp; 1600],[  'CNG',   1600],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'cng', & nbsp; & nbsp; 1500],[  'CNG',   1500],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; [& nbsp; & nbsp; 'cng', & nbsp; & nbsp; 1500][  'CNG',   1500]

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ]]

#Tạo khung dữ liệu

CarData=pd.DataFrame(data=DataValues,columns=ColumnNames)=pd.DataFrame(data=DataValues,columns=ColumnNames)

print(CarData.head())(CarData.head())

################# sau ######

hàm f_oneway () lấy dữ liệu nhóm làm đầu vào và

# Trả về F-thống kê và giá trị p

từ scipy.stats nhập f_onewayscipy.stats import f_oneway

# Chạy bài kiểm tra ANOVA một chiều giữa Carprice và FurferTypes

# Giả định (H0) là nhiên liệu và carprices không tương quan

# Tìm ra dữ liệu giá cho từng loại nhiên liệu làm danh sách

CategoryGroupLists=CarData.groupby('FuelType')['CarPrice'].apply(list)=CarData.groupby('FuelType')['CarPrice'].apply(list)

# Thực hiện bài kiểm tra ANOVA

# Chúng tôi chỉ chấp nhận giả định (H0) khi p-value & gt; 0,05

AnovaResults=f_oneway(*CategoryGroupLists)=f_oneway(*CategoryGroupLists)

in ('giá trị p cho ANOVA là:', anovaresults [1])('P-Value for Anova is: ',AnovaResults[1])

Đầu ra mẫu

Hướng dẫn correlation between numerical and categorical variable python - mối tương quan giữa python biến số và phân loại
Bài kiểm tra ANOVA trong Python

Vì đầu ra của giá trị p gần như bằng không, do đó, chúng tôi từ chối H0. Có nghĩa là các biến tương quan với nhau.

Hướng dẫn correlation between numerical and categorical variable python - mối tương quan giữa python biến số và phân loại

Nhà khoa học dữ liệu chính

Farukh là một nhà đổi mới trong việc giải quyết các vấn đề công nghiệp bằng cách sử dụng trí tuệ nhân tạo. Chuyên môn của ông được hỗ trợ với 10 năm kinh nghiệm trong ngành. Là một nhà khoa học dữ liệu cao cấp, anh ta chịu trách nhiệm thiết kế giải pháp AI/ML để cung cấp mức tăng tối đa cho khách hàng. Là một nhà lãnh đạo tư tưởng, trọng tâm của ông là giải quyết các vấn đề kinh doanh chính của ngành công nghiệp CPG. Ông đã làm việc trên các lĩnh vực khác nhau như viễn thông, bảo hiểm và hậu cần. Ông đã làm việc với các nhà lãnh đạo công nghệ toàn cầu bao gồm Infosys, IBM và các hệ thống liên tục. Niềm đam mê của anh ấy để dạy truyền cảm hứng cho anh ấy để tạo ra trang web này!

Chúng ta có thể tìm thấy mối tương quan giữa biến phân loại và số không?

Hơn nữa, nếu một trong hai biến của cặp là phân loại, chúng ta không thể sử dụng hệ số tương quan. Chúng tôi sẽ phải chuyển sang các số liệu khác. Nếu x và y đều phân loại, chúng ta có thể thử CRAMER's V hoặc hệ số PHI. Nếu x liên tục và y là nhị phân, chúng ta có thể sử dụng hệ số tương quan điểm-điểm.if either variable of the pair is categorical, we can't use the correlation coefficient. We will have to turn to other metrics. If x and y are both categorical, we can try Cramer's V or the phi coefficient. If x is continuous and y is binary, we can use the point-biserial correlation coefficient.

Bạn có thể tìm thấy mối tương quan giữa các biến phân loại Python không?

Nếu một biến phân loại chỉ có hai giá trị (nghĩa là true/false), thì chúng ta có thể chuyển đổi nó thành kiểu dữ liệu số (0 và 1).Vì nó trở thành một biến số, chúng ta có thể tìm ra mối tương quan bằng cách sử dụng hàm dataFrame.corr ().using the dataframe. corr() function.

Bạn có thể nắm bắt mối tương quan giữa các biến liên tục và phân loại không?

Có ba phương pháp hình ảnh lớn để hiểu nếu một liên tục và phân loại có mối tương quan đáng kể-tương quan biserial điểm, hồi quy logistic và thử nghiệm Kruskal Wallis H.Hệ số tương quan Biserial Point là một trường hợp đặc biệt về hệ số tương quan của Pearson.point biserial correlation, logistic regression, and Kruskal Wallis H Test. The point biserial correlation coefficient is a special case of Pearson's correlation coefficient.

Có thể sử dụng tương quan Pearson cho dữ liệu phân loại?

Lưu ý: Tương quan Pearson bivariate không thể giải quyết các mối quan hệ hoặc mối quan hệ phi tuyến tính giữa các biến phân loại.Nếu bạn muốn hiểu các mối quan hệ liên quan đến các biến phân loại và/hoặc các mối quan hệ phi tuyến tính, bạn sẽ cần chọn một biện pháp liên kết khác.cannot address non-linear relationships or relationships among categorical variables. If you wish to understand relationships that involve categorical variables and/or non-linear relationships, you will need to choose another measure of association.