Xây dựng chương trình

Một phần của tài liệu Khai phá tập mục thường xuyên đóng trong cơ sở dữ liệu và ứng dụng2 (Trang 59 - 70)

CHƯƠNG 3: CHƯƠNG TRÌNH THỰC NGHIỆM ỨNG DỤNG

3.2 Xây dựng chương trình

Chương trình thực nghiệm sử dụng thuật toán CHARM được viết bằng ngôn ngữ C# trên bộ Visual Studio 2012 sử dụng phiên bản .Net Framewok 4.0. Yêu cầu tối thiểu của hệ thống khi sử dụng chương trình:

- Cài đặt .Net Framework phiên bản 4.0 trở lên.

- Hệ điều hành tối thiểu Windows XP SP2

Phiên bản .Net Framework 4.0 hỗ trợ hệ điều hành Windows XP SP3 trở lên.

Để cài đặt trên Windows XP SP2, cần cài đặt thêm phần mở rộng Windows Imaging Component (WIC) trước khi cài đặt .Net Framework 4.0.

Mã nguồn đã được biên dịch thành tệp thực thi .exe trên môi trường Windows nên chỉ cần cài đặt bộ thư viện yêu cầu ở trên là có thể chạy được chương trình.

Dữ liệu đầu vào: Tập dữ liệu y khoa của những bệnh nhân có độ tuổi từ 0 đến 70 tuổi được chuẩn đoán bị bệnh hen suyễn được lưu trữ tại kho dữ liệu của bệnh viện C – Thái Nguyên đã xử lý dữ liệu theo quy định khai phá dữ liệu đã được trình bày chi tiết trong 1.3. Sau khi thu thập và xử lý đưa vào hệ thống dữ liệu như bảng 3.6.

Dữ liệu đầu ra: Tập mục thường xuyên đóng, luật kết hợp.

 Mô tả cấu trúc bảng dữ liệu Gồm 2 bảng:

+ Bảng Transform lưu dữ liệu sau khi đã được đưa về dạng nhị phân, các bản ghi thêm vào bảng này thông qua thủ tục [insOriginal] được trình bày chi tiết ở phần dưới

+ Bảng Original lưu dữ liệu gốc sau khi người dùng nhập

Danh sách các thủ tục sử dụng trong chương trình

/****** Object: StoredProcedure [dbo].[insOriginal] ******/

CREATE PROCEDURE [dbo].[insOriginal]

@TTHN SMALLINT,

@T INT,

@TKK INT,

@H INT,

@TN INT,

@KT INT,

@B/Mbhh INT,

@Test INT,

@S INT,

@BHS INT AS BEGIN

DECLARE @TTHN1 SMALLINT,@TTHN2 SMALLINT,

@T1 SMALLINT,@T2 SMALLINT,@T3 SMALLINT,

@TKK1 SMALLINT,@TKK2 SMALLIN,

@H1 SMALLINT,@H2 SMALLINT,

@TN1 SMALLINT,@TN2 SMALLINT,

@KT1 SMALLINT,@KT2 SMALLINT,

@B/Mbhh1 SMALLINT,@B/Mbhh2 SMALLINT,

@Test1 SMALLINT,@Test2 SMALLINT,

@S1 SMALLINT,@S2 SMALLINT,

@BHS1 SMALLINT,@BHS2 SMALLINT,

@MAX FLOAT, @MIN FLOAT

INSERT INTO Original(TTHN,T,TKK,H,TN,KT,B/Mbhh,Test,S,BHS) VALUES(@TTHN,@T,@TKK,@H,@TN,@KT,@B/Mbhh,@Test,@S,@BHS) /*****************************/

IF(@TTHN = 1) BEGIN

SET @TTHN1 = 0 SET @TTHN2 = 1 ENDELSE

BEGIN

SET @TTHN1 = 1 SET @TTHN2 = 0 END

/*****************************/

IF(@T = 1) BEGIN

SET @T1 = 0 SET @T2 = 1 ENDELSE

BEGIN

SET @T1 = 1 SET @T2 = 0 END

/*****************************/

IF(@T = 1) BEGIN

SET @T1 = 0 SET @T2 = 1 ENDELSE

BEGIN

SET @T1 = 1 SET @T2 = 0 END

/*****************************/

IF(@B/MBHH = 1) BEGIN

SET @B/MBHH1 = 0 SET @B/MBHH2 = 1 ENDELSE

BEGIN

SET @B/MBHH1 = 1 SET @B/MBHH2 = 0 END

/*****************************/

IF(@TEST = 1) BEGIN

SET @TEST1 = 0 SET @TEST2 = 1 ENDELSE

BEGIN

SET @TEST1 = 1 SET @TEST2 = 0 END

/*****************************/

IF(@S = 1) BEGIN

SET @S1 = 0 SET @S2 = 1 ENDELSE

BEGIN

SET @S1 = 1 SET @S2 = 0 END

/*****************************/

IF(@BHS = 1) BEGIN

SET @BHS1 = 0 SET @BHS2 = 1 END

ELSE BEGIN

SET @BHS1 = 1 SET @BHS2 = 0 END

/*****************************/

SELECT @MAX = MAX(T) FROM Original

SELECT @MIN = MIN(T) FROM Original

IF(@T >= @MIN AND @T < (2*@MIN- @MAX)/3) BEGIN

SET @T1 = 1 SET @T2 = 0 SET @T3 = 0 END

ELSE IF(@T >= (2*@MIN- @MAX)/3 AND @T < (@MIN + 2*@MAX)/3) BEGIN

SET @T1 = 0 SET @T2 = 1 SET @T3 = 0 END

ELSE IF(@T >= (@MIN + 2*@MAX)/3 AND @T <= @MAX) BEGIN

SET @T1 = 0 SET @T2 = 0 SET @T3 = 1

END/*****************************/

….

INSERT INTO

Transform(TTHN1,TTHN2,T1,T2,T3,TKK1,TKK2,H1,H2,TN1,TN2,T1,T2,B/MBHH1,B/MBHH2,TEST1,T EST2,S1,S2,BHS1,BHS2)

VALUES(@TTHN1,@TTHN2,@T1,@T2,@T3,@TKK1,@TKK2,@TKK3,@H1,@H2,@H3,@TN1,@TN2,@T1,@T2,@B/

MBHH1,@B/MBHH2,@TEST1,@TEST2,@S1,@S2,@BHS1,@BHS2)

END GO

/****** Object: StoredProcedure [dbo].[selAllOriginal] ******/

CREATE PROCEDURE [dbo].[selAllOriginal]

ASBEGIN

SELECT [TTHN],[T],[TKK],[H],[TN],[T],[B/MBHH],[TEST],[S],[BHS]

FROM [Original]

END GO

/****** Object: StoredProcedure [dbo].[selAllOriginalEdit] ******/

CREATE PROCEDURE [dbo].[selAllOriginalEdit]

AS BEGIN

SELECT [id],[TTHN],[T],[TKK],[H],[TN],[T],[B/MBHH],[TEST],[S],[BHS]

FROM [Original]

ENDGO

/****** Object: StoredProcedure [dbo].[selAllTransform] ******/

CREATE PROCEDURE [dbo].[selAllTransform]

ASSELECT [TTHN1],[TTHN2],[T1],[T2],[T3],[TKK1],[TKK2],[H1],[H2],[TN1],[TN2],[T1],[T2]

,[B/MBHH1],[B/MBHH2],[TEST1],[TEST2],[S1],[S2],[BHS1],[BHS2]

FROM [Transform]

GO/****** Object: StoredProcedure [dbo].[selOriginalEditById] ******/

CREATE PROCEDURE [dbo].[selOriginalEditById]

@Id INT ASBEGIN

SELECT [id],[TTHN],[T],[TKK],[H],[TN],[T],[B/MBHH],[TEST],[S],[BHS]

FROM [Original]

WHERE [id] = @Id END

GO

Cấu trúc các lớp chương trình

C# là một ngôn ngữ hướng đối tượng khá mạnh, đặc biệt nó hỗ trợ các Collection được sử dụng để xử lý các dạng dữ liệu kiểu mảng đối tượng và có cấu trúc luôn luôn thay đổi. Các Collection này được sử dụng để lưu trữ và xử lý các tập mục (Itemset), các giao dịch (Trasaction) trong thuật toán.

Mối liên hệ giữa các lớp trong chương trình:

Chương trình thiết kế bao gồm các lớp sau:

AbstractItemset: Lớp này là một lớp dạng trừu tượng (Abstract), chứa các phương thức để xử lý các Itemset

Itemset: Kế thừa từ lớp AbstractItemset, xử lý các thao tác thay đổi Itemset

Itemsets: Đại diện cho cây IT-Tree, chứa các phương thức xử lý các node

ITNode: Đại diện cho một node trong cây IT-Tree, nó chứa các thông tin về Itemset, Tidset, node cha và các node con của nó

ITSearchTree: Lớp này sử dụng thiết lập các ITNode trên cây IT-Tree

TransactionDatabase: Chứa các phương thức đọc dữ liệu đầu vào từ tập tin dạng text, chuyển đổi dữ liệu thành dạng dọc (cấu trúc có dạng Itemset x Danh_sach_transaction)

HashTable: Kiểm tra lưu trữ các tập mục thường xuyên đóng tìm được tránh trường hợp lưu trùng.

AlgoCharm: Lớp chính của chương trình, nó sẽ gọi đến các lớp trên để xử lý. Lớp này chứa toàn bộ cấu trúc của thuật toán.

Hướng dẫn chạy chương trình

Dữ liệu đầu vào có dạng bảng cơ sở dữ liệu có cấu trúc bao gồm: 2 bảng.

- Bảng 1: Lưu trữ dữ liệu về bệnh nhân, trong đó cột đại diện cho thuộc tính và số dòng đại diện cho bệnh nhân.

- Bảng 2: Chứa các dữ liệu dạng số 0, 1 được mã hóa từ bảng 1. Tên thuộc tính được tách ra từ phân hoạch thuộc tính trong bảng 1.

Chạy tệp chương trình CharmAlgorithm.exe, giao diện chương trình như sau:

Hình 3.2: Giao diện chính chứa dữ liệu gốc Giao diện chia làm 3 phần:

Phần 1 - Thực hiện thuật toán: Đây là phần chính của chương trình.

Phần 2 - Chỉnh sửa dữ liệu

Phần 3 - Giới thiệu khái quát thuật toán CHARM.

Để sinh tập mục thường xuyên đóng và danh sách luật kết hợp, chọn ngưỡng hỗ trợ minsup, ngưỡng tin cậy minconf sau đó nhấn nút “THỰC HIỆN”. Chúng ta có thể xem bảng dữ liệu đầu vào dưới dạng bảng gốc hoặc bảng dữ liệu đã được chuyển đổi tại mục “TÙY CHỌN HIỂN THỊ BẢNG DỮ LIỆU”.

Hình 3.3: Hiển thị dữ liệu chuyển đổi

Để chỉnh sửa dữ liệu chúng ta lựa chọn mục “CHỈNH SỬA DỮ LIỆU”. Giao diện như sau:

Hình 3.4: Giao diện thêm mới bản ghi

Nhấn nút “THỰC HIỆN” để nạp cơ sở dữ liệu vào GridView. Để thêm mới bản ghi ấn vào nút “THÊM MỚI”, một cửa sổ nhập liệu cho phép ta nhập thêm bản ghi mới. Để chỉnh sửa bản ghi ta chọn vào một dòng trong GridView và ấn nút “SỬA ĐỔI”. Để xóa bản ghi, ta chọn bản ghi muốn xóa ấn vào nút “XÓA”.

Một phần của tài liệu Khai phá tập mục thường xuyên đóng trong cơ sở dữ liệu và ứng dụng2 (Trang 59 - 70)

Tải bản đầy đủ (DOC)

(80 trang)
w