Bắt đầu ngayBắt đầu miễn phí

Chuỗi và biến phân loại

Như bạn biết, Spark yêu cầu dữ liệu dạng số để mô hình hóa. Đến giờ điều này chưa thành vấn đề; ngay cả các cột boolean cũng dễ dàng chuyển thành số nguyên mà không gặp rắc rối. Nhưng bạn cũng sẽ dùng hãng hàng không và điểm đến của máy bay làm đặc trưng trong mô hình. Chúng được mã hóa dưới dạng chuỗi và không có cách hiển nhiên nào để chuyển chúng sang kiểu dữ liệu số.

May mắn là PySpark có sẵn các hàm xử lý việc này trong pyspark.ml.features. Bạn có thể tạo cái gọi là "vector one-hot" để biểu diễn hãng vận chuyển và điểm đến của mỗi chuyến bay. Một vector one-hot là cách biểu diễn một đặc trưng phân loại, trong đó mỗi quan sát có một vector mà tất cả phần tử đều bằng 0, ngoại trừ nhiều nhất một phần tử có giá trị bằng một (1).

Mỗi phần tử trong vector tương ứng với một mức (level) của đặc trưng, vì vậy có thể xác định mức đúng bằng cách xem phần tử nào của vector bằng một (1).

Bước đầu tiên để mã hóa đặc trưng phân loại là tạo StringIndexer. Các đối tượng của lớp này là các Estimator nhận vào một DataFrame với một cột chuỗi và ánh xạ mỗi chuỗi duy nhất thành một con số. Sau đó, Estimator trả về một Transformer nhận một DataFrame, gắn ánh xạ đó vào như metadata, và trả về một DataFrame mới có cột số tương ứng với cột chuỗi ban đầu.

Bước thứ hai là mã hóa cột số này thành một vector one-hot bằng OneHotEncoder. Cách hoạt động giống hệt StringIndexer: tạo một Estimator rồi đến một Transformer. Kết quả cuối cùng là một cột mã hóa đặc trưng phân loại của bạn thành một vector phù hợp với các quy trình Machine Learning!

Nghe có vẻ phức tạp, nhưng đừng lo! Bạn chỉ cần nhớ tạo StringIndexerOneHotEncoder, còn Pipeline sẽ lo phần còn lại.

Tại sao bạn phải mã hóa một đặc trưng phân loại thành vector one-hot?

Bài tập này là một phần của khóa học

Nền tảng về PySpark

Xem khóa học

Bài tập tương tác thực hành

Biến lý thuyết thành hành động với một trong các bài tập tương tác của chúng tôi

Bắt đầu bài tập