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

Một phần của tài liệu Luật Kết Hợp Và Ứng Dụng Về Khai Phá Dữ Liệu Trong Hệ Quản Trị Cơ Sở Dữ Liệu (Trang 38)

V. Tổng Quan Chương Trình Tìm tập phổ biến và luật kết hợp demo

1.Cấu trúc lập trình chương trình

Sau đây là cấu trúc chương trình mô tả ngắn gọn trong Solution của Project như sau:

Chi tiết các class như sau:

- Form1.cs, Form1.Design.cs, Form1.resx: Form giao diện chính chương trình tương tác với người dùng.

- About.cs, About.Designer,cs, About.resx: Form giao diện giới thiệu về chương trình.

- Program.cs: class mặc định của C# là điểm vào chính của chương trình để gọi Form1 và vẽ các thành phần đồ họa form.

- Utility.cs: class lưu trữ các hàm tiện ích mà sử dụng trong chương trình như: xử lý chuỗi, hàm xuất ra màn hình của cấu trúc dữ liệu

chuỗi/Arraylist, xử lý hội, giao, hiệu 2 tập hợp, và các hàm xử lý output chuỗi ra progress bar thân thiện.

- Set.cs: class lưu trữ thông tin thuộc tính và hàm cho giải thuật các tập hợp như hàm sinh các tổ hợp, hàm loại bỏ phần tử trùng trong tập hợp, hàm sort tập hợp, hàm kiểm tra 2 tập hợp có tồn tại chung một phần tử, hàm kiểm tra 2 tập hợp có tồn tại tất cả phần tử lồng nhau, hàm phát sinh tập luật sinh, hàm tính tập phổ biến tối đại và một số hàm phụ hỗ trợ.

- #1: Menu chương trình bao gồm: tạo mới bằng cách clear dữ liệu, thêm dữ liệu demo, giới thiệu chương trình và thoát

- #2: Các textbox cho phép nhập Min Support và Min Confident cho thuật giải Apriori

- #3: Ma trận sử dụng Data Grid View để nhập dữ liệu chạy chương trình, mỗi dòng là một transaction, các items được phân cách nhau bằng dấu phẩy.

- #4: Nút Process để chạy chương trình tìm tập phổ biến, tập phổ biến tối đại và phát sinh tập luật sinh

- #5: Panel hiển thị kết quả cuối cùng sau khi chương trình chạy xong, bao gồm tìm tập phổ biến, tập phổ biến tối đại và phát sinh tập luật sinh

- #6: Panel xuất ra tiến trình hoạt động một cách chi tiết và các trọng số của việc tìm tập phổ biến và luật sinh.

Sau đây là cấu trúc dữ liệu và một số hàm chính sử dụng trong chương trình:

Cấu trúc dữ liệu trong chương trình

ArrayList[] ArrayData; //Tap mang 2 chieu gom cac phan tu luu tu datagridview

Sự kiện xử lý chính nằm trong hàm btnRun_Click

a. Xóa các dữ liệu trên form và reset cấu trúc dữ liệu về rỗng, mục đích trả về các biến ban đầu nếu trước đó đã chạy

private void btnRun_Click(object sender, EventArgs e) { //Reset data PopularSetL.Clear(); PopularSetCount.Clear(); this.dgvTransaction.Rows[0].Cells[0].Value = 1; CurrentElementOfSet = 1; PopularSetL_Final.Clear(); PopularSetCount_Final.Clear(); PopularSetL_Maximum.Clear();

b. Validate dữ liệu nhập trên minSupp và minConf textbox, nếu bỏ trống và nhập không phải number thì báo lỗi yêu cầu nhập lại

//Validation

string tStringMinSupp = txtMinSupp.Text.Trim(); string tStringMinConf = txtMinConf.Text.Trim(); float temp;

//Check MinSupp if (tStringMinSupp == "") {

MessageBox.Show("Enter a number in MinSupp"); txtMinSupp.Focus();

return; }

if (float.TryParse(tStringMinSupp, out temp)) {

//return ; }

else //if something other than a float {

MessageBox.Show("Please enter a number in MinSupp"); txtMinSupp.Text = ""; txtMinSupp.Focus(); return; } //For minConf if (tStringMinConf == "") {

MessageBox.Show("Enter a number in MinConf"); txtMinConf.Focus(); (adsbygoogle = window.adsbygoogle || []).push({});

return; }

if (float.TryParse(tStringMinConf, out temp)) {

else //if something other than a float {

MessageBox.Show("Please enter a number in MinConf"); txtMinConf.Text = "";

txtMinConf.Focus(); return;

}

c. Sau đây là hàm chính để xử lý tìm tập phổ biến, ta sẽ lặp lại quá trình loại bỏ các phần tử không thỏa MinSupp và phát sinh tổ hợp lại cho đến khi còn khả năng sinh tập phổ biến:

// ==== RUNNING MAIN PROGRAM richtxtProgress.Clear();

richtxtOutput.Clear(); //Get data InitData();

//Process in the set bool running = true;

ArrayList deletePositions = new ArrayList(); while (running)

{ outputDataSet();

CountNumberOfTimesExist(Utility.CountDecimal(txtMinSupp.Text)); //outputCandidateSet();

//deletePositions.Clear();

RemoveItemsInPopularSet(ref deletePositions); outputCandidateSet(deletePositions);

CopyFinalPopularSet(PopularSetL, PopularSetCount, ref

PopularSetL_Final, ref PopularSetCount_Final); running = GeneratePopularSetAgain();

}

//Output result PopularSet OutputPopularSetToResultPanel();

- Hàm InitData(): load dữ liệu từ người dùng nhập vào từ datagridview và lưu trử vào cấu trúc dữ liệu chương trình là ArrayList PopularSetL

- Một số hàm outputxxx (như outputDataSet(), outputCadidateSet(),

outputPolularSetToResultPanel() nhằm mục đích xuất data trong cấu trúc dữ liệu ra màn hình)

- Hàm CountNumberOfTimesExist():tính số lần lặp lại của một mặt hàng trong các giao dịch và tính trọng số lưu trong cấu trúc List<double> PopularSetCount

- Hàm RemoveItemsInPopularSet(): hàm xóa những mặt hàng mà trọng số của nó nhỏ hơn MinSupp

OutputPopularSetMaximumToResultPanel();

- Hàm CalculatePopularSetMaximum: tìm tập phổ biến tối đại thông qua tập phổ biến. Giải thuật tìm tập phổ biến tối đại bằng cách tìm tập hợp đó không tồn tại trong các tập nút gốc trở lên.

e. Sinh luật kết hợp

//======= Luat ket hop ========= //Sinh luat ket hop

int CountNumberOfRules =

Set.GenerateAssociatedRules(PopularSetL_Final, PopularSetCount_Final, PopularSetL_Maximum, ref (adsbygoogle = window.adsbygoogle || []).push({});

AssociatedRules, ref AssociatedRulesWeight, Double.Parse(txtMinConf.Text),

Utility.CountDecimal(txtMinConf.Text), richtxtProgress); OutputAssociatedRulsToResultPanel(CountNumberOfRules);

Dựa vào tập phổ biến tối đại, ta tính tổ hợp luật sinh có thể có của mỗi tập đó, sau đó xét nếu luật sinh đó không thỏa nhỏ hơn MinConf thì bỏ đi, nếu thỏa thì lấy tập luật sinh đó.

Một phần của tài liệu Luật Kết Hợp Và Ứng Dụng Về Khai Phá Dữ Liệu Trong Hệ Quản Trị Cơ Sở Dữ Liệu (Trang 38)