Tiền xử lý dữ liệu trong Weka

Just for you: FREE 60-day trial to the world’s largest digital library.

The SlideShare family just got bigger. Enjoy access to millions of ebooks, audiobooks, magazines, and more from Scribd.

Read free for 60 days

Cancel anytime.

Trong bài viết này, ta sẽ áp dụng những kiến thức liên quan đến lấy và làm sạch dữ liệu (gọi chung là tiền xử lý dữ liệu) trên tập dữ liệu Horse Colic (chứng đau bụng ở ngựa). Để dễ tiếp cận, các thao tác được thực hiện với Weka.

Tiền xử lý dữ liệu trong Weka
Horse Colic

Tập dữ liệu: horse-colic

  • Địa chỉ.
  • Mô tả.
  • Github.

Notebooks: python.

Chuyển đổi định dạng file

Tập dữ liệu ban đầu chỉ chứa các giá trị của các thuộc tính.

2 1 530101 38.50 66 28 3 3 ? 2 5 4 4 ? ? ? 3 5 45.00 8.40 ? ? 2 2 11300 00000 00000 2
1 1 534817 39.2 88 20 ? ? 4 1 3 4 2 ? ? ? 4 2 50 85 2 2 3 2 02208 00000 00000 2
2 1 530334 38.30 40 24 1 1 3 1 3 3 1 ? ? ? 1 1 33.00 6.70 ? ? 1 2 00000 00000 00000 1
1 9 5290409 39.10 164 84 4 1 6 2 2 4 4 1 2 5.00 3 ? 48.00 7.20 3 5.30 2 1 02208 00000 00000 1
2 1 530255 37.30 104 35 ? ? 6 2 ? ? ? ? ? ? ? ? 74.00 7.40 ? ? 2 2 04300 00000 00000 2
2 1 528355 ? ? ? 2 1 3 1 2 3 2 2 1 ? 3 3 ? ? ? ? 1 2 00000 00000 00000 2
1 1 526802 37.90 48 16 1 1 1 1 3 3 3 1 1 ? 3 5 37.00 7.00 ? ? 1 1 03124 00000 00000 2
1 1 529607 ? 60 ? 3 ? ? 1 ? 4 2 2 1 ? 3 4 44.00 8.30 ? ? 2 1 02208 00000 00000 2
2 1 530051 ? 80 36 3 4 3 1 4 4 4 2 1 ? 3 5 38.00 6.20 ? ? 3 1 03205 00000 00000 2
2 9 5299629 38.30 90 ? 1 ? 1 1 5 3 1 2 1 ? 3 ? 40.00 6.20 1 2.20 1 2 00000 00000 00000 1

Ta tiến hành chuyển dữ liệu từ tập tin horse-colic.data sang bảng tính Excel. Sau đó, dựa vào mô tả dữ liệu để đặt tên cho các thuộc tính (tức là dòng đầu tiên của sheet).

1. TItle: Horse Colic database

2. Source Information
-- Creators: Mary McLeish & Matt Cecile
Department of Computer Science
University of Guelph
Guelph, Ontario, Canada N1G 2W1

-- Donor: Will Taylor ()
-- Date: 8/6/89

3. Past Usage:
-- Unknown

4. Relevant Information:

-- 2 data files
-- horse-colic.data: 300 training instances
-- horse-colic.test: 68 test instances
-- Possible class attributes: 24 (whether lesion is surgical)
-- others include: 23, 25, 26, and 27
-- Many Data types: (continuous, discrete, and nominal)

5. Number of Instances: 368 (300 for training, 68 for testing)

Cuối cùng, lưu lại theo định dạng csv với tên horse-colic.csv (Weka có thể mở được định dạng csv).

Tiền xử lý dữ liệu trong Weka
horse-colic.csv

Quan sát tập dữ liệu

Đầu tiên, ta dùng Weka để nạp dữ liệu horse-colic.csv vào chương trình như hình dưới. Ở tab Preprocessing, ta click vào nút Open files. Sau đó, tìm đến nơi lưu file horse-colic.csv ban nãy và click Open (lưu ý: Files of Type ta chọn CSV data file (*.csv)).

Tiền xử lý dữ liệu trong Weka
Open horse-colic file

Trong tập dữ liệu huấn luyện (training set) tải về, ta quan sát thấy có 300 mẫu dữ liệu, 28 thuộc tính, và 30% dữ liệu bị thiếu giá trị. Thông tin các thuộc tính được tổng hợp trong file attribute.csv. Gồm các thông tin như tên thuộc tính, loại thuộc tính, giá trị trung bình, giá trị độ lệch chuẩn, số mẫu bị thiếu giá trị trên thuộc tính này.

Tiền xử lý dữ liệu trong Weka
Weka first look data

Làm sạch dữ liệu

Trong tập dữ liệu horse-colic.csv có cả thuộc tính số (numeric) và thuộc tính rời rạc (nominal) tuy nhiên tất cả đều biểu diễn dưới dạng số. Yêu cầu đặt ra là phải rời rạc hóa các thuộc tính số để các thuộc tính được mô tả đúng như ý nghĩa của nó. Bên cạnh đó dữ liệu còn có giá trị thiếu, nảy sinh một yêu cầu nữa là phải điền giá trị cho các ô bị thiếu dữ liệu. Giải quyết 2 vấn đề trên ta sẽ sử dụng đến một số bộ lọc (filter) của Weka (nằm trong thư mục Unsupervised/Attribute).

Trước tiên, ta chuẩn hóa các thuộc tính số về đoạn [0, 1] bằng bộ lọc Normalize. Sau đó, dùng bộ lọc ReplaceMissingValue để thay thế tất cả các giá trị thiếu bằng giá trị trung bình của thuộc tính.

Tiếp đến, ta dùng bộ lọc Discretize: là bộ lọc dùng để rời rạc hóa các thuộc tính numeric thành nomial. Việc rời rạc đơn giản bằng cách chia giỏ (binning), sắp xếp và chia dữ liệu vào các giỏ có cùng độ rộng (equal-width). Chia vùng giá trị thành N khoảng cùng kích thước, Độ rộng của từng khoảng = (giá trị lớn nhất – giá trị nhỏ nhất)/N. Mặc định, Weka gán N=10.

Tiền xử lý dữ liệu trong Weka
Discretize

Cuối cùng, ta dùng bộ lọc NumericToNominal: là bộ lọc dùng để chuyển các thuộc tính dạng numeric thành nomial. Không như discretization (rời rạc hóa), bộ lọc này gom các mẫu có cùng giá trị vào cùng một nhóm nomial.

Tiền xử lý dữ liệu trong Weka
NumericToNominal

Kết quả sau cùng được lưu thành file horse-colic.arff.

Rút gọn dữ liệu

Dữ liệu có thể quá lớn đối với 1 số chương trình khai thác dữ liệu: tốn nhiều thời gian. Ta rút gọn dữ liệu (kích thước) sao cho vẫn thu được cùng (hoặc gần như cùng) kết quả phân tích. Ta dùng phương pháp giảm số chiều dữ liệu bằng thuật toán cây quyết định.

Đầu tiên, ta xây dựng cây quyết định J48. Trong tab Classify, ta chọn Classifier J48 decision tree.

Tiền xử lý dữ liệu trong Weka
J48 decision tree

Tiếp theo, ta loại các thuộc tính không xuất hiện trên cây.

Tiền xử lý dữ liệu trong Weka
Attribute selection
Tiền xử lý dữ liệu trong Weka
Selected attributes

Như vậy các thuộc tính được thu gọn chỉ còn 5 thuộc tính thay vì 28 thuộc tính như ban đầu.

Kết luận

Qua bài viết này, khi thao tác với tập dữ liệu Horse Colic, ta có thể thấy dữ liệu trong thực tế có chất lượng xấu (dữ liệu bị thiếu và không đầy đủ). Sau các bước làm sạch dữ liệu và rút gọn dữ liệu, ta có thể tiến hành khai thác dữ liệu ở những bước sau này.

Đăng bởi Hong Ong

As a data scientist, I'm passionate about investigating Big Data by using Data Analyst and state-of-the-art Machine Learning methods for solving challenging tasks related to media products such as Data Mining, Natural Language Processing, and Social Analysis which provide powerful visualization tools and predictive model for leaders and organizations making right decisions at the right time. Xem tất cả bài viết bởi Hong Ong

Đã đăng Tháng Tám 20, 2015Tháng Tư 18, 2018