Mean encoding là gì?

Noun AI

Mean encoding trong học máy (machine leanring) là một loại của encoding. Trong phương pháp mean encoding, chúng ta sẽ chuyển đổi các giá trị của biến phân loại (categorical variable) thành giá trị trung bình (mean) dựa trên đầu ra (output) của chúng.

Ví dụ tạo DataFrame có hai đặc trưng (feature) được đặt tên là SubjectName và Target và chúng ta có thể thấy rằng Subject là đặc trưng phân loại (categorical feature), vì vậy chúng ta đã chuyển đổi nó thành đặc trưng số (numerical feature) bằng cách áp dụng mean encoding.


# importing libraries
import pandas as pd
  
# creating dataset
data={'SubjectName':['s1','s2','s3','s1','s4','s3','s2','s1','s2','s4','s1'],
      'Target':[1,0,1,1,1,0,0,1,1,1,0]}
  
df = pd.DataFrame(data)
  
print(df)

Output:


     SubjectName  Target
0    s1    1
1    s2    0
2    s3    1
3    s1    1
4    s4    1
5    s3    0
6    s2    0
7    s1    1
8    s2    1
9    s4    1
10    s1    0

Code : Đếm mọi điểm dữ liệu (data point) trong SubjectName



df.groupby(['SubjectName'])['Target'].count()

Output:


subjectName
 s1         4
 s2         3
 s3         2
 s4         2
Name: Target, dtype: int64

Code: groupby dữ liệu với SubjectName với giá trị trung bình theo giá trị mục tiêu (target value) dương của chúng


df.groupby(['SubjectName'])['Target'].mean()

Output:


subjectName
s1         0.750000
s2         0.333333
s3         0.500000
s4         1.000000
Name: Target, dtype: float64

Đầu ra hiển thị giá trị trung bình được ánh xạ (map) với điểm dữ liệu trong SubjectName với giá trị mục tiêu dương của chúng (1-dương và 0-âm).

Code: Cuối cùng chỉ định giá trị trung bình và ánh xạ với df ['SubjectName']



Mean_encoded_subject = df.groupby(['SubjectName'])['Target'].mean().to_dict()
  
df['SubjectName'] =  df['SubjectName'].map(Mean_encoded_subject)
  
print(df)

Output:


    SubjectName    Target
0    0.750000    1
1    0.333333    0
2    0.500000    1
3    0.750000    1
4    1.000000    1
5    0.500000    0
6    0.333333    0
7    0.750000    1
8    0.333333    1
9    1.000000    1
10    0.750000    0

Learning English Everyday