Luận văn thạc sĩ khai phá dữ liệu sử dụng giải thuật di truyền và ứng dụng

92 5 0
Luận văn thạc sĩ khai phá dữ liệu sử dụng giải thuật di truyền và ứng dụng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐAỊ HOCC̣ CÔNG NGHỆ THÔNG TIN & TRUYỀN THƠNG Hồng Hà Đức KHAI PHÁ DỮ LIỆU SỬ DỤNG GIẢI THUẬT DI TRUYỀN VÀ ỨNG DỤNG Chuyên ngành: Khoa học máy tính Mã số: 60 48 01 01 LUÂṆ VĂN THACC̣ SĨKHOA HỌC MÁY TÍNH Người hướng dẫn khoa học TS Nguyễn Huy Đức Thái Nguyên - 2016 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn LỜI CAM ĐOAN Sau trình học tập Trường Đại học công nghệ thông tin & truyền thông, với kiến thức lý thuyết thực hành tích lũy được, với việc vận dụng kiến thức vào thực tế, em tự nghiên cứu tài liệu, cơng trình nghiên cứu, đồng thời có phân tích, tổng hợp, đúc kết phát triển để hồn thành luận văn thạc sĩ Em xin cam đoan luận văn cơng trình thân em tự tìm hiểu, nghiên cứu hồn thành hướng dẫn tận tình thầy giáo TS Nguyễn Huy Đức Thái Nguyên, tháng năm 2016 Học viên Hồng Hà Đức Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn LỜI CÁM ƠN Trong thời gian hai năm chương trình đào tạo thạc sỹ, gần nửa thời gian dành cho mơn học, thời gian cịn lại dành cho việc lựa chọn đề tài, giáo viên hướng dẫn, tập trung vào nghiên cứu, viết, chỉnh sửa hoàn thiện đề tài Với quỹ thời gian với vị trí cơng việc phải đảm nhận, khơng riêng thân em mà hầu hết sinh viên cao học muốn hồn thành tốt luận văn trước hết phải có xếp thời gian hợp lý, có tập trung học tập nghiên cứu với tinh thần nghiêm túc, nỗ lực hết mình; tiếp đến cần có ủng hộ tinh thần, giúp đỡ chuyên môn điều kiện thiếu định đến việc thành công đề tài Để hoàn thành đề tài trước tiên em xin gửi lời cảm ơn đến thầy giáo hướng dẫn TS Nguyễn Huy Đức, người có định hướng cho em nội dung hướng phát triển đề tài, người có đóng góp quý báu cho em vấn đề chuyên môn đề tài, giúp em tháo gỡ kịp thời vướng mắc trình làm luận văn Em xin cảm ơn Thầy Cô giáo Trường Đại học Công nghệ thông tin Truyền thông Thái Nguyên, bạn bè lớp có ý kiến đóng góp bổ sung cho đề tài luận văn em Xin cảm ơn gia đình, người thân đồng nghiệp quan tâm, ủng hộ hỗ trợ mặt tinh thần suốt thời gian từ nhận đề tài đến hoàn thiện đề tài Trong nội dung luận văn chắn cịn nhiều thiếu sót Em mong Thầy Cơ bạn bè đóng góp để luận văn Em hồn thiện Em xin trân trọng cảm ơn Thái Nguyên, tháng năm 2016 Học viên Hoàng Hà Đức Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn MỤC LỤC LỜI CAM ĐOAN LỜI CÁM ƠN CHƯƠNG TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU VÀ PHÂN CỤM DỮ LIỆU 11 1.1 Tổng quan khám phá tri thức khai phá liệu 11 1.1.1 Giới thiệu chung khám phá tri thức khai phá liệu 11 1.1.2 Quá trình khám phá tri thức 11 1.1.3 Quá trình khai phá liệu 13 1.2 Các phương pháp khai phá liệu 13 1.2.1 Phân lớp dự đoán (Classification & Prediction) 14 1.2.2 Luật kết hợp (Association Rules) 14 1.2.3 Khai thác mẫu (Sequential / Temporal patterns) 14 1.2.4 Phân nhóm- đoạn (Clustering / Segmentation) 15 1.2.5 Hồi quy (Regression) 15 1.2.6 Tổng hợp hóa (Summarization) 15 1.2.7 Mơ hình hóa phụ thuộc (dependency modeling) 16 1.2.8 Phát biến đổi độ lệch (Change and deviation detection) 16 1.3 Phân cụm liệu 16 1.3.1 Phân cụm liệu 16 1.3.2 Các mục tiêu phân cụm liệu 18 1.3.4 Các phương pháp phân cụm liệu 19 1.3.4.1 Phương pháp phân cụm phân cấp 19 1.3.4.2 Phương pháp phân cụm dựa mật độ 20 1.3.4.3 Phương pháp phân cụm phân hoạch 21 1.3.4.4 Phương pháp phân cụm dựa lưới 22 1.3.4.5 Phương pháp phân cụm dựa mơ hình .23 1.3.4.6 Phương pháp phân cụm có liệu ràng buộc 23 CHƯƠNG 2: THUẬT TOÁN PHÂN CỤM DỮ LIỆU DỰA TRÊN GIẢI THUẬT DI TRUYỀN 25 2.1 Giải thuật di truyền 25 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 2.1.1 Lịch sử giải thuật di truyền 25 2.1.2 Tóm tắt giải thuật di truyền 25 2.1.3 Cách biểu diễn toán giải thuật di truyền (hay chọn cách biểu diễn cấu trúc liệu cho toán) 29 2.1.4 Mã hóa (encoding) 35 2.1.5 Các phương pháp chọn(Selection) 37 2.1.6 Chọn lọc Roulette (Roulette Wheel Selection) 37 2.1.7 Các toán tử giải thuật di truyền 41 2.1.8 Các tham số cần sử dụng giải thuật di truyền 44 2.1.9 Điều kiện kết thúc thuật giải di truyền 44 2.1.10 Nguyên lý hoạt động giải thuật di truyền 44 2.1.11 Ứng dụng thuật giải di truyền .44 2.2 Thuật toán phân cụm sử dụng giải thuật di truyền 44 2.2.1 Một số giải thuật phân cụm liệu .44 2.2.2 Giải thuật phân cụm dựa giải thuật di truyền 57 2.3 So sánh hiệu thuật toán Kmeans thuật toán Kmeans sử dụng giải thuật di truyền 2.3.1 Thuật Toán K-Means 2.3.2 Thuật toán Kmean sử dụng giải thuật di truyền 2.3.3 So sánh k-means k-means sử dụng giải thuật di truyền: CHƯƠNG 3: THỰC NGHIỆM PHÂN CỤM DỮ LIỆU VỀ SINH VIÊN CỦA TRƯỜNG CAO ĐẲNG Y TẾ YÊN BÁI 3.1 Mơ tả tốn 3.1.1 Cơ sở liệu 3.2 Xây dựng chương trình 3.2.2 Các chức chương trình 3.2.3 Giao diện chương trình 3.2.3 Kết thực nghiệm KẾT LUẬN TÀI LIỆU THAM KHẢO PHẦN PHỤ LỤC Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn DANH SÁCH HÌNH VẼ Hinh 1.1: Quá trình khám phá tri thức ̀̀ Hinh 1.2: Quá trình khai phá liệu ̀̀ Hinh 1.3: Ví dụ phân cụm liệu ̀̀ Hinh 1.4: Ví dụ phân cụm nhà dựa khoảng cách ̀̀ Hinh 1.5: Ví dụ phân cụm ngơi nhà dựa kích cở ̀̀ Hinh 1.6 Các chiến lược phân cụm phân cấp ̀̀ Hinh 1.7: Ví dụ phân cụm theo mật độ (1) ̀̀ Hinh 1.8: Ví dụ phân cụm theo mật độ (2) ̀̀ Hinh 1.9: Cấu trúc phân cụm dựa lưới ̀̀ Hinh 1.10: Ví dụ phân cụm dựa mơ hình ̀̀ Hinh 1.11: Các cách mà cụm đưa ̀̀ Hinh 2.1:Sơ đồ tổng quát giải thuật di truyền ̀̀ Hinh 2.2: Nhiễm sắc thể ̀̀ Hình 2.2 Minh họa trường hợp tách liệu thành cụm Hình 2.3 Khái quát giải thuật CURE Hình 2.3 Các cụm liệu khám phá CURE Hình 2.4 Lân cận P với ngưỡng Eps Hình 2.5: Mật độ - đến trực tiếp Hình 2.6: Mật độ đến Hình 2.7: Mật độ liên thông Hình 2.8: Cụm nhiễu Hình 2.9: Hình dạng cụm khám phá giải thuật DBSCAN Hình 3.1 Cơ sở liệu học sinh sinh viên Hinh 3.2 Giao diện chương trình ̀̀ Hinh 3.3 Màn hình khởi động ̀̀ Hinh 3.4 Màn hình phân cụm liệu ̀̀ Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn Từ viết tắt KPDL KPTT PCDL CSDL GA DE NST CDL CNTT Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn MỞ ĐẦU Phân cụm liêu q trình nhóm tập đối tượng tương tự tập liêu vào cụm cho đối tượng thuộc cụm tương đồng đối tượng thuộc cụm khác khơng tương đồng Phân cụm liêu khơng địi hỏi phải định nghĩa trước mẫu liêu huấn luyện Vì thế, coi phân cụm liêu cách học không giám sát (unsupervised learning) Các Kỹ thuật phân cụm ứng dụng nhiều lĩnh vực tài ngân hành để phân lọai nhóm khách hàng khác Ngồi phân cụm liêu cịn sử dụng bước tiền xử lý cho giải thuật khai phá liệu khác phân loại mô tả đặc điểm, có tác dụng phát cụm Trong ngành khoa học máy tính, tìm kiếm lời giải tối ưu cho toán vấn đề nhà khoa học máy tính đặc biệt quan tâm Mục đích thuật tốn tìm kiếm thuật giải chất lượng cao sử dụng kỹ thuật trí tuệ nhân tạo đặc biệt cần thiết giải tốn có khơng gian tìm kiếm lớn Giải thuật di truyền (Genetic Algorithm GA) kỹ thuật tìm kiếm lời giải tối ưu đáp ứng yêu cầu nhiều toán ứng dụng Hiện nay, thuật toán di truyền ứng dụng rộng rãi lĩnh vực phức tạp Thuật toán di truyền chứng tỏ hiệu vấn đề khó giải phương pháp thông thường hay phương pháp cổ điển, tốn cần có lượng giá, đánh giá tối ưu kết thu Chính vậy, phạm vi đề tài này, chọn hướng phân cụm liệu dựa giải thuật di truyền Luận văn gồm có chương: Chương I: Tổng quan khai phá liệu phân cụm liệu Phần giới thiệu cách tổng quát trình khám phá tri thức nói chung khai phá liệu nói riêng Các phương pháp khai phá liệu phân cụm liệu Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn Chương II: Thuật toán phân cụm liệu dựa giải thuật di truyền Trong chương trình bày giải thuật di truyền, thuật toán phân cụm sử dụng giải thuật di truyền so sánh hiệu thuật toán Kmeans thuật toán Kmeans sử dụng giải thuật di truyền Chương III: Thực nghiệm phân cụm liệu sinh viên trường Cao đẳng Y tế n Bái Phần mơ tả tốn, xây dựng chương trình Cài đặt chương trình thử nghiệm ứng dụng kỹ thuật phân cụm công tác học sinh sinh viên Trường Cao đẳng Y tế Yên Bái kết thu 10 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn Hình 3.1 Cơ sở liệu học sinh sinh viên 3.2 Xây dựng chương trình - Nhập liệu vào SQL Server 2008 trở lên Chương trình chạy Visual Studio 2012 trở lên 3.2.1 Các chức chương trình Trong luận văn sử dụng viết ngôn ngữ lập trình C# xây dựng chương trình sử dụng giải thuật di truyền để phân cụm liệu sinh viên trường Cao Đẳng Y Tế Yên Bái: Đọc số liệu phân cụm Xây dựng cấu trúc liệu Chọn số cụm đánh giá Chọn môn đánh giá điểm rèn luyện Hiển thị kết Phân tích kết để đưa nhận xét, đánh giá 3.2.2 Giao diện chương trình Từ việc khảo sát, thống kê tập hợp liệu điểm rèn luyện học sinh, sinh viên luận văn xây dựng chương trình tương đối hồn chỉnh để giải tốn khảo sát, đánh giá, thống kê đảm bảo yêu cầu đề ban đầu Sau giao diện kết chương trình ứng dụng cài đặt chạy chương trình: Hiǹ h 3.2 Giao diện chương trình 71 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 72 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn Màn hình khởi động Hình 3.3 Màn hình khởi động Phân cụm liệu: thực việc phân cụm liệu Hình 3.4 Màn hình phân cụm liệu Gồm chức chính: • Chọn số cụm • Phân cụm theo điểm đánh giá rèn luyện • Hai đánh giá hai nhóm đánh giá lúc 3.2.3 Kết thực nghiệm Dữ liệu đầu vào dựa 24 học sinh, sinh viên trường Cao đẳng Y tế Yên Bái để phân cụm đánh giá ý thức học tập, ta chia cụm, “Đánh giá ý thức học tập” sau: Cụm 1: Trong cụm điểm trung bình phần tử học sinh, sinh viên đạt điểm học tập với tâm cụm 7.95, chiếm tỷ lệ 25% 73 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn Cụm 2: Ở ta thấy có phần tử học sinh, sinh viên đạt điểm học tập với tâm cụm 7.97, chiếm tỷ lệ 29,1% Cụm 3: Ta thấy có 11 phần tử học sinh, sinh viên đạt điểm học tập với tâm cụm 8.14 điểm cao chiếm tỷ lệ 45,8% Theo bảng phân tích ta đánh giá học sinh, sinh viên với điểm ý thức học tập rèn luyện, tìm học sinh sinh viên yếu bồi dưỡng, học tập lại để đạt kết cao 74 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn KẾT LUẬN Những kết luận văn Trình bày khái niệm sở lý thuyết khai phá liệu phân cụm liệu Giới thiệu giải thuật chung cho giải thuật phân cụm sử dụng giải thuật di truyền - Thực cài đặt thử nghiệm giải thuật phân cụm Kmeans sử dụng giải thuật di truyền Hướng phát triển luận văn Trên sở kết đạt được, tiếp tục nghiên cứu số vấn đề sau: - Xây dựng tiếp chương trình thử nghiệm thuật toán phân cụm giải thuật phân cụm có sử dụng giải thuật di truyền - Tìm thêm ứng dụng giải thuật vào thực tiễn Mặc dù em cố gắng thời gian hiểu biết lĩnh vực khai phá liệu hạn chế nên luận văn chắn không tránh khỏi khuyết điểm định Trong tương lai, em cố gắng khắc phục hạn chế, tiếp tục nghiên cứu vấn đề nêu Rất mong nhận ý kiến đóng góp quý thầy độc giả để luận văn hồn thiện 75 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn I TÀI LIỆU THAM KHẢO TÀI LIỆU TIẾNG VIỆT [1] Nguyễn Đình Thúc (2000) “Trí tuệ nhân tạo - Lập trình tiến hóa” NXB Giáo dục [2] Nguyễn Đình Thúc (2000) “Mạng Nơ ron phương pháp ứng dụng” Nhà XB Giáo dục [3] An Hồng Sơn, (2008) “Nghiên cứu số phương pháp phân cụm mờ ứng dụng”, Luận văn thạc sĩ, Trường Đại học Thái Nguyên [4] PGS.TS Đỗ Phúc (2006) “Giáo trình Khai thác Dữ liệu, Trường Đại học Công nghệ thông tin TP Hồ Chí Minh” Đại học Quốc gia TP Hồ Chí Minh [5] Nguyễn Nhật Quang (2011) “Khai Phá Dữ Liệu, Trường Đại học Bách khoa Hà Nội” II TÀI LIỆU TIẾNG ANH [7] David A.Coley, “an introduction to genetic algorithms for scientists and enginer”, Copyright Q 1999 by World Scientific Publishing Co Pte Ltd [8] Han J, M Kamber, J Pei, (2012) “Data Mining: Concepts and Techniques” Third Edition, Morgan Kaufmann Publishers is an imprint of Elsevier, USA [9] Goldberg D E., (1989) “Genetic algorithm in search, optimization and machine learning” Addison-Wesley, Reading, Massachusets [10] Qin Ding and Jim Gasvoda (2005) “A Genetic Algorithm for Clustering image data” [11] Luiz Antonio Nogueira Lorena Luiz Antonio Nogueira Lorena “Using Genetic Algorithms in Clustering Problems” [12] Jay N Bhuyan, Vijay V Raghavan, Venkatesh K Elayavalli “Genetic Algorithm for Clustering with an Ordered Representation” [13] Miki AOYAGI and Kumiko Tsuji (2004), “ A modified genetic algorithm for image segmentation based on feature clustering” [14] Dr (Mrs.) R.Sukanesh, R Harikumar Member, IAENG (2007) “A Comparison of Genetic Algorithm & Neural Network (MLP) In Patient Specific Classification of Epilepsy Risk Levels from EEGSignals” S Rajasekaran, G A Vijayalakshmi Pai (2004) “ Neural Networks, Fuzzy Logic and Genetic Algorithms” [16] Schaffer, J.D Whitley, D Eshelman, L.J.Philips Labs., Briarcliff Manor, [15] 76 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn NY (2002) “ Combinations of genetic algorithms and neural networks” [17] Richard S Segall , Qingyu Zhang (2006), “Applications of Neural Network and Genetic Algorithm Data Mining Techniques in Bioinformatics Knowledge Discovery - A Preliminary Study” [18] Shoa-Yei Yeong, Al-Salihy (2009) “Combination of neural network based clustering and genetic algorithm for multi-objective 802.11n planning” [19] Zhan-hong Xin, Hai-jun Zhang (2002) “Neural Network and Genetic Algorithms for Topology Optimization of the CCS7 Network” [20] Guojun Gan, Chaoqun Ma, Jianhong Wu (2007) “Data Clustering Theory, Algorithms, and Applications” ASA-SIAM Series on Statistics and Applied Probability, SIAM, Philadelphia, ASA, Alexandria, VA 77 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn PHẦN PHỤ LỤC Chương trình nguồn namespace GAs_KMean { class GAs { //Thuật toán phân cụm liệu, đầu vào mảng chiều số cụm, đầu mảng cụm public static int[] Cluster(double[][] rawData, int numClusters) { double[][] data = Normalized(rawData); // so large values don't dominate bool changed = true; // was there a change in at least one cluster assignment? bool success = true; // were all means able to be computed? (no zerocount clusters) int[] clustering = InitClustering(data.Length, numClusters, 0); // semi-random initialization double[][] means = Allocate(numClusters, data[0].Length); // small convenience int maxCount = 100; // sanity check int ct = 0; while (changed == true && success == true && ct < maxCount) { ++ct; // k-means typically converges very quickly success = UpdateMeans(data, clustering, means); changed = UpdateClustering(data, clustering, means); } return clustering; } public static double[][] Normalized(double[][] rawData) { / normalize raw data by computing (x - mean) / stddev / primary alternative is min-max: / v' = (v - min) / (max - min) / make a copy of input data double[][] result = new double[rawData.Length][]; for (int i = 0; i < rawData.Length; ++i) 78 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn { result[i] = new double[rawData[i].Length]; Array.Copy(rawData[i], result[i], rawData[i].Length); } for (int j = 0; j < result[0].Length; ++j) // each col { double = 10000, max = -1; double colSum = 0.0; for (int i = 0; i < result.Length; ++i) { colSum += result[i][j]; if (result[i][j] > max) max = result[i][j]; if (result[i][j] < min) = result[i][j]; } if (colSum != 0&& min< max) { //double mean = colSum / result.Length; //double sum = 0.0; //for (int i = 0; i < result.Length; ++i) / sum += (result[i][j] - mean) * (result[i][j] - mean); //double sd = sum / result.Length; for (int i = 0; i < result.Length; ++i) { //result[i][j] = (result[i][j] - mean) / sd; result[i][j] = (result[i][j] - min) / (max - min); } } } return result; } private static int[] InitClustering(int numTuples, int numClusters, int randomSeed) { Random random = new Random(randomSeed); int[] clustering = new int[numTuples]; for (int i = 0; i < numClusters; ++i) // make sure each cluster has at least one tuple clustering[i] = i; for (int i = numClusters; i < clustering.Length; ++i) clustering[i] = random.Next(0, numClusters); // other assignments random return clustering; } private static double[][] Allocate(int numClusters, int numColumns) { 79 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn / convenience matrix allocator for Cluster() double[][] result = new double[numClusters][]; for (int k = 0; k < numClusters; ++k) result[k] = new double[numColumns]; return result; } private static bool UpdateMeans(double[][] data, int[] clustering, double[][] means) { int numClusters = means.Length; int[] clusterCounts = new int[numClusters]; for (int i = 0; i < data.Length; ++i) { int cluster = clustering[i]; ++clusterCounts[cluster]; } for (int k = 0; k < numClusters; ++k) if (clusterCounts[k] == 0) return false; // bad clustering no change to means[][] / update, zero-out means so it can be used as scratch matrix for (int k = 0; k < means.Length; ++k) for (int j = 0; j < means[k].Length; ++j) means[k][j] = 0.0; for (int i = 0; i < data.Length; ++i) { int cluster = clustering[i]; for (int j = 0; j < data[i].Length; ++j) means[cluster][j] += data[i][j]; // accumulate sum } for (int k = 0; k < means.Length; ++k) for (int j = 0; j < means[k].Length; ++j) means[k][j] /= clusterCounts[k]; // danger of div by return true; } private static bool UpdateClustering(double[][] data, int[] clustering, double[] [] means) { int numClusters = means.Length; bool changed = false; int[] newClustering = new int[clustering.Length]; // proposed result Array.Copy(clustering, newClustering, clustering.Length); double[] distances = new double[numClusters]; // distances from curr tuple to each mean 80 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn for (int i = 0; i < data.Length; ++i) // walk thru each tuple { for (int k = 0; k < numClusters; ++k) distances[k] = Distance(data[i], means[k]); // compute distances from curr tuple to all k means int newClusterID = MinIndex(distances); // find closest mean ID if (newClusterID != newClustering[i]) { changed = true; newClustering[i] = newClusterID; // update } } if (changed == false) return false; // no change so bail and don't update clustering[][] / check proposed clustering[] cluster counts int[] clusterCounts = new int[numClusters]; for (int i = 0; i < data.Length; ++i) { int cluster = newClustering[i]; + +clusterCounts[cluster]; } for (int k = 0; k < numClusters; ++k) if (clusterCounts[k] == 0) return false; // bad clustering no change to clustering[][] Array.Copy(newClustering, clustering, newClustering.Length); // update return true; // good clustering and at least one change } private static double Distance(double[] tuple, double[] mean) { / Euclidean distance between two vectors for UpdateClustering() / consider alternatives such as Manhattan distance double sumSquaredDiffs = 0.0; for (int j = 0; j < tuple.Length; ++j) sumSquaredDiffs += Math.Pow((tuple[j] - mean[j]), 2); return Math.Sqrt(sumSquaredDiffs); } private static int MinIndex(double[] distances) { / index of smallest value in array / helper for UpdateClustering() 81 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn int indexOfMin = 0; double smallDist = distances[0]; for (int k = 0; k < distances.Length; ++k) { if (distances[k] < smallDist) { smallDist = distances[k]; indexOfMin = k; } } return indexOfMin; } // ===================================================== ======================= // misc display helpers for demo static void ShowData(double[][] data, int decimals, bool indices, bool newLine) { for (int i = 0; i < data.Length; ++i) { if (indices) Console.Write(i.ToString().PadLeft(3) + " "); for (int j = 0; j < data[i].Length; ++j) { if (data[i][j] >= 0.0) Console.Write(" "); Console.Write(data[i] [j].ToString("F" + decimals) + " "); } Console.WriteLine(""); } if (newLine) Console.WriteLine(""); } // ShowData static void ShowVector(int[] vector, bool newLine) { for (int i = 0; i < vector.Length; ++i) Console.Write(vector[i] + " "); if (newLine) Console.WriteLine("\n"); } static void ShowClustered(double[][] data, int[] clustering, int numClusters, int decimals) { for (int k = 0; k < numClusters; ++k) 82 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn { Console.WriteLine("==================="); for (int i = 0; i < data.Length; ++i) { int clusterID = clustering[i]; if (clusterID != k) continue; Console.Write(i.ToString().PadLeft(3) + " "); for (int j = 0; j < data[i].Length; ++j) { if (data[i][j] >= 0.0) Console.Write(" "); Console.Write(data[i] [j].ToString("F" + decimals) + " "); } Console.WriteLine(""); } Console.WriteLine("================ ==="); } // k } } } 83 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn ... Ứng dụng thuật giải di truyền .44 2.2 Thuật toán phân cụm sử dụng giải thuật di truyền 44 2.2.1 Một số giải thuật phân cụm liệu .44 2.2.2 Giải thuật phân cụm dựa giải thuật di truyền. .. Học liệu – ĐHTN http://www.lrc.tnu.edu.vn CHƯƠNG THUẬT TOÁN PHÂN CỤM DỮ LIỆU DỰA TRÊN GIẢI THUẬT DI TRUYỀN 2.1 Giải thuật di truyền 2.1.1 Lịch sử giải thuật di truyền Trước tiên ý niệm thuật giải. .. toán tử giải thuật di truyền 41 2.1.8 Các tham số cần sử dụng giải thuật di truyền 44 2.1.9 Điều kiện kết thúc thuật giải di truyền 44 2.1.10 Nguyên lý hoạt động giải thuật di truyền

Ngày đăng: 09/06/2021, 06:53

Tài liệu cùng người dùng

Tài liệu liên quan