You are on page 1of 10

Tiền xử lý dữ liệu (Horse Colic dataset)

https://techtalk.vn/blog/posts/tien-xu-ly-du-lieu-horse-colic-dataset
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.

Tập dữ liệu: horse-colic
Địa chỉ: http://archive.ics.uci.edu/ml/machine-learning-databases/horse-colic/horse-
colic.data
Mô tả: http://archive.ics.uci.edu/ml/machine-learning-databases/horse-colic/horse-
colic.names
Github: https://github.com/ongxuanhong/Preprocessing-with-horse-colic-dataset
 
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.

1 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
2
1 1 534817 39.2 88 20 ? ? 4 1 3 4 2 ? ? ? 4 2 50 85 2 2 3 2
3 02208 00000 00000 2
4 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
5
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
6
2 1 528355 ? ? ? 2 1 3 1 2 3 2 2 1 ? 3 3 ? ? ? ? 1 2 00000 00000
7 00000 2
8 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
9
1 1 529607 ? 60 ? 3 ? ? 1 ? 4 2 2 1 ? 3 4 44.00 8.30 ? ? 2 1
1 02208 00000 00000 2
0
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 1. TItle: Horse Colic database

2  
3 2. Source Information
-- Creators: Mary McLeish & Matt Cecile
4
Department of Computer Science
5
University of Guelph
6
Guelph, Ontario, Canada N1G 2W1
7
mdmcleish@water.waterloo.edu
8
-- Donor: Will Taylor (taylor@pluto.arc.nasa.gov)
9 -- Date: 8/6/89
1  
0
3. Past Usage:
1
-- Unknown
1
 
1
4. Relevant Information:
2
 
1
3 -- 2 data files

1
4
1
5
1
6
1
7
-- horse-colic.data: 300 training instances
1 -- horse-colic.test: 68 test instances
8
-- Possible class attributes: 24 (whether lesion is surgical)
1
-- others include: 23, 25, 26, and 27
9
-- Many Data types: (continuous, discrete, and nominal)
2
0  
5. Number of Instances: 368 (300 for training, 68 for
2
testing)
1
2
2
2
3
2
4

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).
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)).
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.
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.
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.
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ếp theo, ta loại các thuộc tính không xuất hiện trên cây.
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.

You might also like