0
Tải bản đầy đủ (.pdf) (82 trang)

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

Một phần của tài liệu NGHIÊN CỨU MỘT SỐ PHƯƠNG PHÁP RÚT GỌN THUỘC TÍNH TRONG BẢNG QUYẾT ĐỊNH KHÔNG ĐẦY ĐỦ (Trang 70 -70 )

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

- Cài đặt .Net Framework phiên bản 2.0 trở lên. - Hệ điều hành tối thiểu Windows XP SP2

- Trên máy tính PC với cấu hình Pentium 1GHz, 256 MB bộ nhớ RAM trở lên.

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.

* Hướng dẫn sử dụng

Chuẩn bị dữ liệu dạng file excel 2003 theo đúng định dạng đã mô tả ở trên, nếu định dạng dữ liệu bị sai, chƣơng trình thực thi sẽ báo lỗi.

Chạy file: Mở file chạy TapRutGon.exe  chọn File dữ liệu  tìm đƣờng dẫn

đến file excel nhấp nút “Tìm tập rút gọn”, chƣơng trình sẽ tính toán và đƣa ra

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Bố cục giao diện chƣơng trình tìm tập rút gọn từ bảng quyết định không đầy đủ gồm 3 phần:

Vùng dataGridView phía trên cùng hiển thị dữ liệu bảng quyết định không đầy đủ đƣợc xử lý.

Hai Button: Chọn file dữ liệu (để thực hiện chọn dữ liệu) và Tìm tập rút gọn (để bắt đầu tìm tập rút gọn). Khi bắt đầu tìm tập rút gọn thì nút “Tìm tập rút gọn” sẽ mờ đi để ngƣời sử dụng thấy đƣợc nó đang thực hiện, và sẽ hiện lại khi quá trình tính toán kết thúc. Vùng bộ đếm thời gian sẽ hiển thị tổng thời gian thực hiện tính toán.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Chƣơng trình chạy thử nghiệm thuật toán với mỗi bộ số liệu:|U| là số đối tƣợng, |C| là số thuộc tính điều kiện, |R| là số thuộc tính của tập rút gọn, t là thời gian thực

hiện thuật toán đơn vị tính bằng giây. Với mỗi bộ số liệu sẽ tiến hành đo đạc 5

lần và lấy kết quả trung bình làm tròn 4 chữ số sau dấu phẩy, Bảng 3.2 và Bảng 3.3 mô tả kết quả thực hiện của thuật toán.

Bảng 3.2. Kết quả thực hiện thuật toán Thuật toán 2.2

STT Bộ số liệu |U| |C| |R| Lần 1 Lần 2 Lần 3 Lần 4 Lần 5 Trung

bình 1 Ô tô 6 5 2 0.0163 0.0161 0.0167 0.0162 0.0160 0.0162 2 Bệnh viêm gan 149 20 3 46.6171 41.1175 44.9767 41.4860 40.9169 43.0228 3 Automobile 206 24 2 57.4323 60.3665 71.1852 68.4046 59.6472 63.4071

Bảng 3.3. Tập rút gọn của Thuật toán 2.2

STT Bộ số liệu Tập rút gọn của Thuật toán 2.2

1 Ô tô {Kích thƣớc, Tốc độ tối đa}

2 Bệnh viêm gan {Tuổi, SGOT, Tình trạng bất ổn}

3 Automobile {curb-weight, make}

3.4 Nhận xét

Sau khi tìm hiểu và cài đặt chƣơng trình demo với 3 bộ dữ liệu thì ta thấy:

Bộ dữ liệu 1 về ô tô: Kết quả thực nghiệm trùng với kết quả tính toán bằng lý thuyết đã trình bày ở chƣơng 2.

Bộ dữ liệu càng nhỏ thì thời gian chạy thuật toán càng nhanh. Ví dụ: bộ dữ liệu về ôtô: |U|:6,|C|:5 thì thời gian chạy thuật toán trung bình sau 5 lần: 0.0162 s . Bộ dữ liệu về bệnh viêm gan: |U|: 149, |C|:20 thì thời gian chạy thuật toán trung bình sau 5 lần: 43.0228 s.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

* Kết quả đạt đƣợc trong luận văn

1) Nghiên cứu về hệ thông tin đầy đủ, hệ thông tin không đầy đủ, bảng quyết định, bảng quyết định không đầy đủ, metric trên họ các tri thức và các tính chất...từ đó trình bày một phƣơng pháp rút gọn thuộc tính trong bảng quyết định đầy đủ sử dụng metric. Metric đƣợc xây trên họ các tri thức dựa trên khoảng cách Jaccard giữa hai tập hợp hữu hạn.

2) Trình bày 1 phƣơng pháp rút gọn thuộc tính trong bảng quyết định không đầy đủ sử dụng metric. Metric đƣợc xây dựng trên họ các phủ dựa trên entropy Liang mở rộng. Và cài đặt chƣơng trình demo thuật toán trong luận văn này là thuật toán heuristic tìm một tập rút gọn tốt nhất của bảng quyết định không đầy đủ sử

dụng metric. Đầu vào là bảng quyết định không đầy đủ IDS= (U,C∪D,V,f), và đầu

ra là một tập rút gọn tốt nhất R.

* Hƣớng nghiên cứu tiếp theo

Luận văn đã trình bày về hệ thông tin đầy đủ, hệ thông tin không đầy đủ, bảng quyết định đầy đủ, bảng quyết định không đầy đủ … Tiếp tục nghiên cứu sâu hơn về các phƣơng pháp rút gọn khác, từ đó có thể xây dựng đƣợc các phƣơng pháp rút gọn thuộc tính mới hiệu quả hơn phƣơng pháp đã có. Mặc dù đã hết sức cố gắng trong quá trình tìm hiểu, nghiên cứu về luận văn, thời gian cũng có hạn nên chắc chắn luận văn không tránh khỏi những thiếu sót, rất mong Thầy Cô và các bạn góp ý để luận văn đƣợc hoàn chỉnh hơn.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Tiếng Việt

[1] Hoàng Thị Lan Giao (2007) “Khía cạnh đại số và logic phát hiện luật theo

tiếp cận tập thô”, Luận án Tiến sỹ Toán học, Viện Công Nghệ Thông Tin.

[2] Nguyễn Long Giang (2012), “Nghiên cứu một số phƣơng pháp khai phá dữ liệu theo tiếp cận lý thuyết tập thô”, Luận án tiến sỹ toán học, Viện Công Nghệ Thông Tin.

[3] Nguyễn Long Giang, Nguyễn Thanh Tùng (2012), “Một phƣơng pháp mới

rút gọn thuộc tính trong bảng quyết định sử dụng Metric”, Kỷ yếu Hội thảo Một số

vấn đề chọn lọc về CNTT và TT, Cần Thơ, 10/2011, tr. 249-266.

[4] Nguyễn Long Giang, Nguyễn Thanh Tùng, Vũ Đức Thi, “Một phƣơng pháp mới rút gọn thuộc tính trong bảng quyết định không đầy đủ sử dụng metric”.

Tạp trí Tin học và Điều khiển học.

[5] Nguyễn Thanh Tùng (2010), “Về một metric trên họ các phân hoạch của mộttập hữu hạn”, Tạp trí Tin học và Điều khiển học, T. 26, S.1, tr. 73-85.

Tiếng Anh

[6] Kryszkiewicz M. (1998), “Rough set approach to incomplete information systems”. Information Science, Vol. 112, pp. 39-49.

[7] Liang J.Y, Chin K.S, Dang C.Y.and Richard C.M.YAM, “New method for measuring uncertainty and fuzziness in rough in rough set theory”, International Journal of General Systems 31, pp.331-342.

[8] Liang J.Y. and Xu Z.B (2002), “The algorithm on knowledge reduction in incomplete information system”, International Journal of Uncertainty, Fuzziness andKnowledge – Based systems 10 (1), pp. 95-103.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

entropy, rough entropy and knowledge granulation in incomplete information system”, InternationalJornal of General Systems 35(6), pp.641- 654

[10] Lv Y.J. and Li J.H (2007), “A Quick Algorithmfor Reduction of Attribute

in Information Systems”, The First International Symposium on Data, Privacy, and

E- Commerce (ISDPE 2007), pp. 98-100.

[11] Miao D.Q. and Hu G.R (1999), “A heuristic algorithm for knowledge

reduction”, Computer Research and Development, Vol.36, No.6, pp. 681-684.

[12] Pawlak Z. (1998), “Rough set theory and its applications to data analysis”, Cybernetics and systems 29, pp.661-688.

[13] R.López de Manstaras (1991), “A distance- based attribute selection measure for decision tree induction”, Machine Learning Vol. 6, pp81-92.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.OleDb; using System.Threading; using System.Diagnostics; namespace TapRutGon {

public partial class Form1 : Form {

public Form1() {

InitializeComponent(); }

private void btnChonFile_Click(object sender, EventArgs e) {

OpenFileDialog ofd = new OpenFileDialog(); ofd.InitialDirectory = Application.StartupPath; ofd.Filter = "Microsoft Excel File (*.xls)|*.xls"; ofd.ShowDialog();

try {

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ Source=" + ofd.FileName + ";Extended Properties=Excel 8.0;");

OleDbDataAdapter myDA = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", mycon); DataSet myDS = new DataSet();

myDA.Fill(myDS);

dataGridView1.DataSource = null;

dataGridView1.DataSource = myDS.Tables[0]; for (int i = 0; i < dataGridView1.Columns.Count; i++)

dataGridView1.Columns[i].Name = Convert.ToChar(i + 65).ToString(); }

catch (Exception ex) {

if (ofd.FileName == "")

MessageBox.Show("Phải chọn dữ liệu", "Báo lỗi"); else

MessageBox.Show(ex.Message);//"Dữ liệu không đúng định dạng","Báo lỗi"); }

}

private void btnTim_Click(object sender, EventArgs e) {

Stopwatch stw = new Stopwatch(); stw.Start();

Timtaprutgon(); stw.Stop();

lbTotalTime.Text = stw.Elapsed.ToString(); }

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ try

{

btnTim.Text = "Đang thực hiện"; btnTim.Enabled = false;

string R = "";//tap rut gon

string C = "";//tap cac thuoc tinh cua bang

for (int i = 0; i < dataGridView1.ColumnCount - 1; i++) C += dataGridView1.Columns[i].Name + ","; C = C.Substring(0, C.Length - 1);

string d = dataGridView1.Columns[dataGridView1.ColumnCount - 1].Name; double dC = distance(C, d, dataGridView1);

//them thuoc tinh vao tap rut gon

while (distance(R, d, dataGridView1) != dC) {

R = addR(R, C, d, dataGridView1); }

R = R.Substring(1, R.Length-1);

//loai bo thuoc tinh du thua trong tap rut gon string[] Ra = R.Split(new char[] { ',' }); for (int i = 0; i < Ra.Length; i++) {

string temp = "";

for (int j = 0; j < Ra.Length; j++) if (!Ra[j].Equals(Ra[i])) temp += Ra[j]+",";

temp = temp.Substring(0, temp.Length - 1); if (distance(temp, d, dataGridView1) == dC)

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ }

//Hien thi tap rut gon ra listview lvTapRutGon.Items.Clear();

string [] Rb = R.Split(new char[] { ',' }); for (int i = 0; i < Rb.Length; i++) {

string itemname = dataGridView1.Columns[Rb[i]].HeaderText; ListViewItem lv = new ListViewItem((i + 1).ToString()); lv.SubItems.Add(itemname); lvTapRutGon.Items.Add(lv); } btnTim.Text = "Tìm tập rút gọn"; btnTim.Enabled = true; }

catch (Exception ex) { MessageBox.Show(ex.Message); btnTim.Text = "Tìm tập rút gọn"; btnTim.Enabled = true; } }

private double distance(string items, string d, DataGridView dtgrid) {

int sum = 0;

for(int i=0;i<dtgrid.RowCount-1;i++) {

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ }

int binhphuong = Convert.ToInt32(Math.Pow(dtgrid.RowCount - 1, 2)); return Convert.ToDouble(sum) / binhphuong;

}

private int S(int row, string items, DataGridView dtgrid) { if (items == "") return 0; else { int dem = 0;

string[] item = items.Split(new char[] { ',' }); for (int i = 0; i < dtgrid.RowCount; i++) { if (dtgrid.Rows[i].IsNewRow) break; else { bool t = true;

for (int j = 0; j < item.Length; j++) if (!item[j].Equals(""))

{

if (!(dtgrid[item[j], i].Value.ToString().Equals(dtgrid[item[j], row].Value.ToString())) && (!dtgrid[item[j], i].Value.ToString().Equals("*")) && (!dtgrid[item[j], row].Value.ToString().Equals("*")))

{

t = false; break;

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ } if (t) dem++; } } return dem; } }

private string addR(string R, string C, string d, DataGridView dtgrid) {

double max = 0; string a="";

string[] itemC = C.Split(new char[]{','}); string[] itemR = R.Split(new char[] { ',' }); for (int i = 0; i < itemC.Length; i++) {

bool t = true;

for (int j = 0; j < itemR.Length; j++) if(itemC[i].Equals(itemR[j])) { t = false; break; } if (t) {

double st= sig(R, itemC[i], d,dtgrid); if(st>max)

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ a=itemC[i].ToString(); } } } return R + "," + a; }

private double sig(string R, string a,string d, DataGridView dtgrid) { string temp = R + "," + a; return distance(R,d,dtgrid)-distance(temp,d,dtgrid); } } }

Một phần của tài liệu NGHIÊN CỨU MỘT SỐ PHƯƠNG PHÁP RÚT GỌN THUỘC TÍNH TRONG BẢNG QUYẾT ĐỊNH KHÔNG ĐẦY ĐỦ (Trang 70 -70 )

×