Khai phá dữ liệu với Weka
ĐẠI HỌC HUẾ
TRƯỜNG ĐẠI HỌC SƯ PHẠM
KHOA TIN HỌC
BÁO CÁO BÀI TẬP NHÓM
Đề tài:
TẠO LUẬT KẾT HỢP TRONG CƠ SƠ DỮ LIỆU
BANK-DATA.CSV VỚI PHẦN MỀM WEKA
Giáo viên hướng dẫn Sinh viên thực hiện
Th.S Nguyễn Hương Giang Lưu Hải Phong
Trịnh Thị Hiền
Nguyễn Thị Hằng
Huế, 12/2009
I. GIỚI THIỆU WEKA
GVHD: Nguyễn Hương Giang Trang 1 Nhóm TH: Nhóm 1
Khai phá dữ liệu với Weka
Weka là môi trường thử nghiệm KPDL do các nhà khoa học thuộc trường
Đại học Waitako, NZ, khởi xướng và được sự đóng góp của rất nhiều nhà nghiên
cứu trên thế giới. Weka là phần mềm mã nguồn mở, cung cấp công cụ trực quan
và sinh động cho mọi người tìm hiểu về KPDL. Weka còn cho phép các giải thuật
học mới phát triển có thể tích hợp vào môi trường của nó. Hệ thống được viết bằng
java. Nó chạy được hầu hết trên tất cả hệ điều hành.
Weka cung cấp nhiều giải thuật khác nhau với nhiều phương thức cho quá
trình xử lý để ước lượng kết quả bằng sơ đồ cho bất kì một dữ liệu nào.
Weka cung cấp những tính năng chính sau:
+ Bao gồm nhiều công cụ đa dạng để thay đổi tập dữ liệu, xử lý dữ liệu, giải
thuật học và phương pháp đánh giá.
+ Giao diện đồ họa người dùng (trực quan hóa dữ liệu).
+ Môi trường để so sánh các giải thuật học.
Bạn có thể xử lý trước tập dữ liệu, cho vào trong một sơ đồ, và phân chia các
Classify: Tạo ra những chương trình để phân loại.
Cluster: Tạo phân cụm cho cơ sở dữ liệu.
Associate: Tạo luật kết hợp cho dữ liệu và đánh giá chúng.
Select attributes: Lựa chọn những thuộc tính liên quan nhất trong tập dữ liệu.
Visualize: (Nhìn thấy sự khác nhau hai chiều của dữ liệu và sự tương tác giữa
chúng)View different two-dimensional plots of the data and interact with them.
1. Đưa dữ liệu vào
Trong tab Preprocess có:
− Nút mở các file có sẵn trên máy.
− Nút mở file từ máy khác.
− Nút đọc dữ liệu từ một cơ sở dữ liệu.
GVHD: Nguyễn Hương Giang Trang 4 Nhóm TH: Nhóm 1
Khai phá dữ liệu với Weka
− Nút Phần mềm tự tạo ra dữ liệu cho bạn theo những sự lựa
chọn của bạn.
Sử dụng nút bạn có thể đọc các tập tin ở nhiều định dạng như:
định dạng ARFF, định dạng CSV, định dạng C4.5.
Khi bạn mở một file từ mục open file sẽ hiện ra một cửa sổ như sau:
Hình 3: Mở file trong Exporer
2. Preprocess
Trong cửa sổ của Preprocess có 4 vùng
• Vùng Filter
Cho bạn biết được giải thuật dùng để tiền xử lý dữ liệu đang được sử dụng. Bạn
có thể thay đổi giải thuật đó bằng cách click vào button
GVHD: Nguyễn Hương Giang Trang 5 Nhóm TH: Nhóm 1
Khai phá dữ liệu với Weka
• Vùng Current Relation (Các mối quan hệ hiện tại)
• Relation (Quan hệ): Cho biết tên của bảng dữ liệu
• Instances (Trường hợp): Số lượng các bản ghi
• Attributes.(Những thuộc tính): Số lượng các thuộc tính trong dữ liệu.
có các giá trị Minimum (Giá trị nhỏ nhất), Maximum (Giá trị lớn nhất), mean (Giá
trị trung bình), Độ lệch chuẩn (StdDev) như hình sau:
Sau khi đưa dữ liệu vào, bạn có thể thự hiện các thao tác để xử lý dữ liệu trước
khi thực hiện những công việc khác như phân cụm, tạo cây quyết định, luật kết
hợp… Để thực hiện xử lý dữ liệu trước hết bạn click vào button , một cây
thư mục đổ xuống, trong cây thưc mục đổ xuống như hình dưới đây:
GVHD: Nguyễn Hương Giang Trang 7 Nhóm TH: Nhóm 1
Khai phá dữ liệu với Weka
Từ cây thư mục này bạn có thể thực hiện các thao tác để tiền xử lý dữ liệu của
bạn. Ở đây chúng tôi chỉ trình bày một số mục trong phần
Unsupervised/Attribute của cây thư mục.
II.1 Add
Cho phép bạn chèn thêm một thuộc tính cho bảng dữ liệu.
Chọn mục Add trong cây thư mục, ở bên phải nút Choose sẽ xuất hiện dòng
chữ Add -N unnamed -C last. Click chuột trái (hoặc click chuột phải chọn show
properties…) sẽ xuất hiện một hộp thoại cho phép bạn thiết lập các tham số:
• AttributeIndex: Vị trí của thuộc tính cần thêm vào trong bảng dữ liệu. mặc
định là cuối bảng dữ liệu (Last).
• AttributeName: Tên của thuộc tính mới.
• AttributeType: kiểu dữ liệu của thuộc tính mới.
• DateFormat : định dạng ngày
• NominalLabels: Giá trị của thuộc tính nếu thuộc tính có kiểu dữ liệu là
Nominal, các giá trị được cách nhau bằng dấu phẩy.
II.2 AddEpression
Cho phép chèn thêm một trường mà giá trị của trường này được tính theo một
biểu thức toán học do người dùng nhập vào.
Chọn mục AddEpression trong cây thư mục, ở bên phải nút Choose sẽ xuất
hiện dòng chữ AddExpression -E a1^2 -N expression. Click chuột trái (hoặc
click chuột phải chọn show properties…) vào dòng chữ này sẽ xuất hiện một hộp
nguyên vị trí như lúc đưa vào. Chọn true thì các giá trị trong thuộc tính được sắp
xếp tăng dần như trong từ điển.
II.5 ChangeDateFormat
Thay đổi định dạng kiểu ngày tháng.
Chọn mục ChangeDateFormat trong cây thư mục, ở bên phải nút Choose sẽ
xuất hiện dòng chữ ChangeDateFormat -C last -F yyyy-MM-dd'T'HH:mm:ss.
Click chuột trái (hoặc click chuột phải chọn show properties…) vào dòng chữ này
sẽ xuất hiện một hộp thoại cho phép bạn thiết lập các tham số:
GVHD: Nguyễn Hương Giang Trang 10 Nhóm TH: Nhóm 1
Khai phá dữ liệu với Weka
• AttributeIndex: Vị trí thuộc tính cần thay đổi định dạng
• DateFormat: Thiết lập định dạng mới cho thuộc tính được chọn.
II.6 Copy
Cho phép bạn sao chép các thuộc tính trong bảng dữ liệu. Sự sao chép này phụ
thuộc vào các thông số mà bạn lựa chọn.
Chọn mục Copy trong cây thư mục, ở bên phải nút Choose sẽ xuất hiện dòng
chữ Copy. Click chuột trái (hoặc click chuột phải chọn show properties…) vào
dòng chữ này sẽ xuất hiện một hộp thoại cho phép bạn thiết lập các tham số:
• AttributeIndices: vị trí của thuộc tính cần copy nếu chọn false ở mục
invertSelection hoặc không cần copy nếu chọn true ở mục invertSelection
II.7 Discretize
Chỉ thực hiện trên các thuộc tính có giá trị là kiểu dữ liệu numeric. Cho phép
bạn chia khoảng giá trị của thuộc tính đó từ min đến max thành các khoảng giá trị
nhỏ hơn
GVHD: Nguyễn Hương Giang Trang 11 Nhóm TH: Nhóm 1
Khai phá dữ liệu với Weka
Chọn mục Discretize trong cây thư mục, ở bên phải nút Choose sẽ xuất hiện
dòng chữ Discretize -B 10 -M -1.0 -R first-last. Click chuột trái (hoặc click chuột
phải chọn show properties…) vào dòng chữ này sẽ xuất hiện một hộp thoại cho
phép bạn thiết lập các tham số:
• NominalToBinary: Đổi kiểu Nominal sang kiểu Binary
• NominalToString: Đổi kiểu Nominal sang kiểu String
• NumericToBinary: Đổi kiểu Numeric sang kiểu Binary
• NumericToNominal: Đổi kiểu Numeric sang kiểu Nominal
• StringToNominal: Đổi kiểu String sang kiểu Nominal
II.11 Remove
Xóa các thuộc tính không cần thiết đối với quá trình xử lí dữ liệu.
Chọn mục Remove trong cây thư mục, ở bên phải nút Choose sẽ xuất hiện
dòng chữ Remove. Click chuột trái (hoặc click chuột phải chọn show
properties…) vào dòng chữ này sẽ xuất hiện một hộp thoại cho phép bạn thiết lập
các tham số:
GVHD: Nguyễn Hương Giang Trang 14 Nhóm TH: Nhóm 1
Khai phá dữ liệu với Weka
• AttributeIndices: Lựa chọn những thuộc tính mà bạn muốn xóa, các thuộc
tính cách nhau bằng dấu phẩy, nếu nhiều thuộc tính liên tục nhau thì sử dụng dấu
gạch ngang (-).
• InvertSelection: Nếu như bạn chọn là False thì những thuộc tính bạn chọn
sẽ bị xóa, còn nếu bạn chọn là true thì những thuộc tính bạn chọn sẽ không bị xóa
mà sẽ xóa những thuộc tính bạn không chọn.
II.12 SwapValues
Đổi vị trí của hai giá trị của một thuộc tính.
Chọn mục SwapValues trong cây thư mục, ở bên phải nút Choose sẽ xuất hiện
dòng chữ SwapValues -C last -F first -S last. Click chuột trái (hoặc click chuột
phải chọn show properties…) vào dòng chữ này sẽ xuất hiện một hộp thoại cho
phép bạn thiết lập các tham số:
• AttributeIndex: Lựa chọn thuộc tính mà bạn muốn thay đổi vị trí hai giá trị
của thuộc tính đó
• FirstValueIndex: Số thứ tự của giá trị thứ nhất trong thuộc tính mà bạn
muốn đổi
• SecondValueIndex: Số thứ tự của giá trị thứ hai trong thuộc tính mà bạn
+ Supplied test set:
+ Cross-validation:
+ Percentage split:
Ngoài ra trong vùng này còn có button cho phép bạn thiết lập một
số tham số khác
• Vùng Result List
Vùng này chứa danh sách các kết quả đạt được sau khi thực hiện việc phân lớp.
Trong danh sách này bạn có thể chọn một kết quả vào nhấp chuột phải vào kết quả
đó sẽ xuất hiện một danh sách cho phép bạn chọn như hình sau:
• View in main window: Mở kết quả ở vùng classifies output
• View in separate window: Mở kết quả ở một cửa sổ khác
• Save result buffer: Lưu kết quả vào bộ nhớ
• Delete result buffer: Xóa kết quả
• Load model:
• Save model:
• Re-evaluate model on current test set:
• Visualize classifier errors:
GVHD: Nguyễn Hương Giang Trang 17 Nhóm TH: Nhóm 1
Khai phá dữ liệu với Weka
• Visualize tree: Mở cây quyết định
• Visualize margin cuve:
• Visualize threshold cuve:
• Visualize cost cuve:
• Vùng Classifier output
Đây là nơi hiện thị kết quả sau khi thực hiện phân lớp
3. Associate (luật kết hợp)
Gồm có 3 vùng: Associator, Associator output, Result list. Ngoài ra còn có
một button để bắt đầu thực hiện việc tạo ra luật kết hợp, button để
kết thúc.
• Associator:
ID, sau đó click vào
GVHD: Nguyễn Hương Giang Trang 19 Nhóm TH: Nhóm 1
Khai phá dữ liệu với Weka
2.3 Chuyển đổi kiểu dữ liệu của thuộc tính TUOI thành kiểu Nominal với 3 giá
trị Thanh nien (Thanh niên), Trung nien (Trung niên), Gia(Già)
• Bước 1: Chọn mục MathExpression trong cây thư mục rồi thiết lập các
thông số trong hộp thoại của nó như sau:
Click vào để hoàn thành. Tiếp đó click vào để thực hiện.
• Bước 2: Chuyển đổi kiểu dữ liệu của trường TUOI sang kiểu Nominal
Sử dụng mục NumericToNominal
• Bước 3: Thêm các giá trị Thanh nien, Trung nien, Gia vào thuộc tính TUOI
Chọn mục AddValues ở cây thư mục và thiết lập các thông số trong hộp thoại
của nó như sau:
• Bước 4: Click vào button ở phía trên vùng Filter, sẽ xuất hiện một
bảng dữ liệu như sau:
GVHD: Nguyễn Hương Giang Trang 20 Nhóm TH: Nhóm 1
Khai phá dữ liệu với Weka
Click chuột phải vào thuộc tính TUOI rồi chọn Replace Value Width… Xuất
hiện hộp thoại, gõ 1 vào rồi Click OK, xuất hiện hộp thoại thứ 2, gõ Thanh nien
vào rồi click OK:
Thực hiện tương tự với hai trường hợp còn lại.
2.4 Chuyển đổi kiểu dữ liệu của thuộc tính THU NHAP thành kiểu Nominal
với 3 giá trị Thap (Thấp), TB (Trung bình), Cao (Cao).
• Bước 1: Chọn mục MathExpression trong cây thư mục rồi thiết lập các
thông số trong hộp thoại của nó như sau:
GVHD: Nguyễn Hương Giang Trang 21 Nhóm TH: Nhóm 1
Khai phá dữ liệu với Weka
Click vào để hoàn thành. Tiếp đó click vào để thực hiện.
• Bước 2: Chuyển đổi kiểu dữ liệu của trường THU NHAP sang kiểu
sau đó chọn mục tree/j48 rồi click
vào button
để bắt đầu việc phân lớp. Sau khi phân lớp xong kết quả sẽ được
hiện thì ở vùng Classifier như sau:
=== Run information ===
Scheme: weka.classifiers.trees.J48 -C 0.25 -M 2
Relation: BANK-DATA-SUA
Instances: 101
Attributes: 11
TUOI
GIOI TINH
KHU VUC
THU NHAP
KET HON
CON
XE
TKTK
TK_HIEN TAI
THE CHAP
CHO VAY
Test mode: 10-fold cross-validation
=== Classifier model (full training set) ===
J48 pruned tree
CON = 1_con: C (19.0/2.0)
CON = 0_con
| THE CHAP = K
| | KET HON = K: C (7.0/1.0)
| | KET HON = C
Relative absolute error 86.5751 %
Root relative squared error 111.6459 %
Total Number of Instances 101
=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.537 0.447 0.58 0.537 0.558 0.618 C
0.553 0.463 0.51 0.553 0.531 0.618 K
Weighted Avg. 0.545 0.454 0.547 0.545 0.545 0.618
=== Confusion Matrix ===
a b < classified as
GVHD: Nguyễn Hương Giang Trang 25 Nhóm TH: Nhóm 1