Đôi khi trong tập dữ liệu, chúng ta gặp các cột chứa các số không có thứ tự ưu tiên cụ thể. Dữ liệu trong cột thường biểu thị một danh mục hoặc giá trị của danh mục và cả khi dữ liệu trong cột được mã hóa nhãn. Điều này gây nhầm lẫn cho mô hình ML, để tránh điều này, dữ liệu trong cột phải được mã hóa One Hot.
Nội dung chính
1. Một mã hóa nóng(One Hot)
Nó đề cập đến việc chia nhỏ cột chứa dữ liệu phân loại số thành nhiều cột tùy thuộc vào số lượng danh mục có trong cột đó. Mỗi cột chứa “0” hoặc “1” tương ứng với cột mà nó đã được đặt.
Ví dụ :
Xem xét dữ liệu mà trái cây và giá trị phân loại tương ứng của chúng được đưa ra.
FRUIT | CATEGORICAL VALUE OF FRUIT | PRICE |
---|---|---|
apple | 1 | 5 |
mango | 2 | 10 |
apple | 1 | 15 |
orange | 3 | 20 |
Đầu ra sau một lần mã hóa nóng(One Hot) dữ liệu được đưa ra như sau,
APPLE | MANGO | ORANGE | PRICE |
---|---|---|---|
1 | 0 | 0 | 5 |
0 | 1 | 0 | 10 |
1 | 0 | 0 | 15 |
0 | 0 | 1 | 20 |
2. Dưới đây là Triển khai bằng Python
Ví dụ 1:
Ví dụ sau đây là dữ liệu về khu vực và điểm tín dụng của khách hàng, khu vực là một giá trị phân loại cần được mã hóa nóng.
# Program for demonstration of one hot encoding
# import libraries
import numpy as np
import pandas as pd
# import the data required
data = pd.read_csv(r"../../onehotenc_data.csv")
print(data)
Output:
3. Để một mã hóa nóng cột vùng
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------
brightness_4
# importing one hot encoder from sklearn
# There are changes in OneHotEncoder class
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
# creating one hot encoder object with categorical feature 0
# indicating the first column
columnTransformer = ColumnTransformer([('encoder',
OneHotEncoder(),
[0])],
remainder='passthrough')
data = np.array(columnTransformer.fit_transform(data), dtype = np.str)
Output
Kết quả bao gồm 5 cột, một cột cho giá và 4 cột còn lại đại diện cho 4 khu vực.
Ví dụ 2:
Một bộ mã hóa nóng chỉ nhận các giá trị phân loại bằng số, do đó bất kỳ giá trị nào của loại chuỗi phải được mã hóa nhãn trước khi mã hóa một nóng.
Ví dụ dưới đây có dữ liệu về địa lý và giới tính của khách hàng phải được mã hóa nhãn trước.
# importing libraries
import numpy as np
import pandas as pds
# After importing the required data
print(data)
Output
4. Mã hóa Nhãn dữ liệu
# label encoding the data
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
data['Gender']= le.fit_transform(data['Gender'])
data['Geography']= le.fit_transform(data['Geography'])
Output
Một mã hóa nóng các cột giới tính và địa lý
# importing one hot encoder from sklearn
from sklearn.preprocessing import OneHotEncoder
# creating one hot encoder object by default
# entire data passed is one hot encoded
onehotencoder = OneHotEncoder()
data = np.array(columnTransformer.fit_transform(data), dtype = np.str)
Output
Kết quả bao gồm 5 cột, 2 cột đại diện cho giới tính, nam và nữ, 3 cột còn lại đại diện cho các quốc gia Pháp, Đức và Tây Ban Nha.
Ghi chú :
- Một bộ mã hóa nóng không chấp nhận mảng 1 chiều hoặc chuỗi gấu trúc, đầu vào phải luôn là 2 Chiều.
- Dữ liệu được chuyển đến bộ mã hóa không được chứa chuỗi.
Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.
Nguồn và Tài liệu tiếng anh tham khảo:
Tài liệu từ cafedev:
- Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
- Tự học ML bằng Python từ cơ bản tới nâng cao.
- Ebook về python tại đây.
- Các series tự học lập trình MIỄN PHÍ khác
- Nơi liên hệ hợp tác hoặc quảng cáo cùng Cafedevn tại đây.
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!