BỘ GIÁO DỤC VÀ ĐÀO TẠO

VIỆN HÀN LÂM KHOA HỌC VÀ CÔNG NGHỆ VN

N G U Y Ễ N T H

HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ

H O À N G Y Ế N

Nguyễn Thị Hoàng Yến

PHÂN TÍCH DỮ LIỆU SINH VIÊN TỐT NGHIỆP BẰNG PHƯƠNG PHÁP TRỰC QUAN

H Ệ T H Ố N G T H Ô N G T I N

LUẬN VĂN THẠC SĨ NGÀNH MÁY TÍNH

2 0 2 1

Thành phố Hồ Chí Minh - 2021

BỘ GIÁO DỤC VIỆN HÀN LÂM

VÀ ĐÀO TẠO KHOA HỌC VÀ CÔNG NGHỆ VN

HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ

Nguyễn Thị Hoàng Yến

PHÂN TÍCH DỮ LIỆU SINH VIÊN TỐT NGHIỆP BẰNG

PHƯƠNG PHÁP TRỰC QUAN

Chuyên ngành : Hệ Thống Thông Tin.

Mã số : 8480104

LUẬN VĂN THẠC SĨ NGÀNH MÁY TÍNH

NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS TRẦN VĨNH PHƯỚC

Thành phố Hồ Chí Minh – 2021

i

LỜI CAM KẾT

Tôi cam đoan đây là công trình nghiên cứu của cá nhân tôi, xuất phát từ nhu cầu thực tế trong quá trình học tập cao học, cũng như nhu cầu biểu diễn và phân tích trực quan của Trường Cao đẳng Giao thông Vận tải. Dữ liệu sử dụng trong nghiên cứu được thu thập tại Trường Cao đẳng Giao thông Vận tải Trung ương III. Trong quá trình nghiên cứu của luận văn, các tài liệu trích dẫn và tham khảo có nguồn gốc rõ ràng. Kết quả của luận văn nghiên cứu Phân tích dữ liệu sinh viên tốt nghiệp bằng phương pháp trực quan được đặt ra nhằm tìm kiếm thông tin hữu ích liên quan đến việc hình thành hoặc bổ sung các thông tin hỗ trợ nâng cao chất lượng đào tạo của Trường là trung thực.

Tác giả luận văn

Nguyễn Thị Hoàng Yến

ii

LỜI CẢM ƠN

Trong quá trình thực hiện luận văn “Phân tích dữ liệu sinh viên tốt nghiệp bằng phương pháp trực quan”, tôi đã nhận được nhiều sự hỗ trợ, chỉ dẫn từ phía Thầy Cô, các cá nhân và tổ chức sau:

Tôi xin chân thành cảm ơn sâu sắc đến Thầy hướng dẫn chính PGS.TS. Trần Vĩnh Phước đã tận tình dìu dắt, hướng dẫn, góp ý, chỉnh sửa, chỉ dạy các kiến thức trực quan, khai phá dữ liệu, hệ thống thông tin để tôi hoàn thành luận văn này.

Trân trọng cảm ơn TS. Trương Nguyên Vũ – Viện trưởng viện Cơ học và Tin học ứng dụng thuộc Viện Hàn Lâm Khoa Học đã tạo điều kiện cho lớp học tốt nhất, mời nhiều nhà giáo ưu tú nhất để lớp học thành công tốt đẹp.

Tôi xin gởi lời cảm ơn đến Quý bạn Viện Cơ Học và Tin Học Ứng Dụng, Trường Cao đẳng Giao thông Vận tải Trung ương III đã đóng góp ý kiến xây dựng dữ liệu ban đầu.

Tôi cũng xin được gửi lời cảm ơn đến Ban Giám đốc Học Viện, Phòng đào tạo Sau Đại học, các Thầy, Cô trong Khoa Hệ thống thông tin và viễn thông, Học Viện Khoa học và Công nghệ, Viện Cơ Học và Tin Học Ứng Dụng đã tạo mọi điều kiện và môi trường nghiên cứu học tập tốt nhất.

Tác giả luận văn

Nguyễn Thị Hoàng Yến

iii

DANH MỤC CHỮ VIẾT TẮT

TÊN VIẾT TẮT

KÍ HIỆU

DIỄN GIẢI

SV

Sinh viên

iv

DANH MỤC CÁC BẢNG BIỂU

Bảng 2.1: Bảng điểm tốt nghiệp của Sinh viên ............................................... 11 Bảng 2.2: Bảng điểm tốt nghiệp sinh viên tốt nghiệp và có việc làm ............ 11 Bảng 3.1: Bảng dữ liệu sinh viên xử lý ........................................................... 14 Bảng 3.2: Bảng dữ liệu điểm SV thuật toán K -Means .................................. 33 Bảng 3.3: Bảng dữ liệu cụm ngẫu nhiên k = 1 ................................................ 34 Bảng 3.4: Bảng kết quả khoảng cách đến tâm cụm ........................................ 34 Bảng 3.5: Bảng kết quả phân cụm .................................................................. 35 Bảng 3.6: Bảng tính kết quả tâm cụm ............................................................. 36 Bảng 3.7: Kết quả khoảng cách sinh viên đến tâm cụm ................................. 37 Bảng 3.8: Bảng kết quả phân cụm mới ........................................................... 37 Bảng 3.9: Bảng dữ liệu tính lại tâm cụm ........................................................ 38 Bảng 3.10: Bảng kết quả số liệu đến tâm cụm mới ........................................ 39 Bảng 3.11: Bảng kết quả phân cụm mới ......................................................... 39 Bảng 3.12: Bảng dữ liệu SV phân cụm ........................................................... 40 Bảng 4.1: Bảng phân tích câu hỏi ................................................................... 46

v

DANH SÁCH CÁC HÌNH Hình 2.1: Biểu đồ minh họa trực quan .............................................................. 3 Hình 2.2: Biểu đồ cột đứng ............................................................................... 4 Hình 2.3: Biểu đồ Pareto Chart ......................................................................... 4 Hình 2.4: Biểu đồ Area ..................................................................................... 5 Hình 2.5: Biểu đồ Line ...................................................................................... 6 Hình 2.6: Biểu đồ Line Point ............................................................................ 6 Hình 2.7: Sơ đồ thuật toán K - Mean ................................................................ 7 Hình 2.8: Minh họa thành phần Matplotlib figure [10] .................................... 9 Hình 3.1: Biểu đồ cột biểu diễn điểm toàn khóa Sinh Viên ........................... 20 Hình 3.2: Biểu đồ dạng đường biểu diễn điểm Sinh viên Cơ khí động lực .... 20 Hình 3.3: Biểu đồ dạng đường biểu diễn điểm Sinh viên Cơ khí chế tạo ...... 21 Hình 3.4: Biểu đồ dạng đường biểu diễn điểm Sinh viên Khoa Điện ............ 21 Hình 3.5: Biểu đồ dạng đường biểu diễn điểm Sinh viên toàn khóa .............. 22 Hình 3.6: Biểu đồ đường so sánh biểu diễn điểm Sinh viên Cơ khí động lực 22 Hình 3.7: Biểu đồ đường so sánh biểu diễn điểm Sinh viên Cơ khí chế tạo .. 23 Hình 3.8: Biểu đồ đường so sánh biểu diễn điểm Sinh viên Khoa Điện ........ 23 Hình 3.9: Biểu đồ đường so sánh biểu diễn điểm Sinh viên toàn khóa .......... 24 Hình 3.10: Biểu đồ đường điểm biểu diễn điểm SV Cơ khí động lực ............ 24 Hình 3.11: Biểu đồ đường điểm biểu diễn điểm SV Cơ chế tạo .................... 25 Hình 3.12: Biểu đồ đường điểm biểu diễn điểm SV Khoa Điện .................... 25 Hình 3.13: Biểu đồ đường điểm biểu diễn điểm Sinh viên toàn khóa ............ 26 Hình 3.14: Biểu diễn điểm chuyên ngành và điểm tốt nghiệp SV.................. 26 Hình 3.15: Biểu diễn điểm chuyên ngành, tốt nghiệp SV .............................. 27 Hình 3.16: Điểm trung bình tốt nghiệp SV ..................................................... 27 Hình 3.17: Biểu diễn điểm SV có việc và chưa có việc ................................. 28 Hình 3.18: Biểu diễn điểm SV có việc và chưa có việc ................................. 28 Hình 3.19: Biểu diễn 3 chiều điểm SV năm 1 ................................................ 29 Hình 3.10: Biểu diễn 3 chiều điểm SV năm 2 ................................................ 29 Hình 3.21: Biểu diễn 3 chiều điểm SV năm 3 ................................................ 30 Hình 3.22: Biểu diễn 3 chiều điểm SV chuyên ngành .................................... 31 Hình 3.23: Biểu diễn 3 chiều điểm tốt nghiệp SV .......................................... 31

vi

Hình 3.24: Biểu diễn điểm SV khoa cơ khí động lực ..................................... 32 Hình 3.25: Biểu diễn 3 chiều điểm SV cơ khí chế tạo .................................... 32 Hình 3.26: Biểu diễn 3 chiều điểm SV khoa điện ........................................... 32 Hình 3.27: Nhận file dữ liệu Excel ................................................................. 41 Hình 3.28: Phân cụm với K =3 ....................................................................... 41 Hình 3.29: Phâm cụm với K = 5 ..................................................................... 42 Hình 3.30: Phân cụm K = 10 ........................................................................... 42 Hình 3.31: Kết quả phân cụm theo K .............................................................. 43 Hình 3.32: Phân cụm với K = 5 ...................................................................... 43 Hình 3.33: Phâm cụm điểm Ycn và Ytn SV với K = 5 .................................. 44 Hình 3.34: Kết quả phân cụm điểm Ycn, Ytn của SV với K = 10 ................. 45 Hình 4.1: Biểu đồ điểm toàn khóa học SV ..................................................... 46 Hình 4.2: Điểm chuyên ngành và tốt nghiệp SV ............................................ 47 Hình 4.3: Biểu đồ 3D điểm SV Y1, Y2, Y3, Ycn, Ytn................................... 48 Hình 4.4: Điểm năm 1, 2, 3 với K =10 ........................................................... 48 Hình 4.5: Điểm chuyên ngành Ycn, Ytn của SV với K = 10 ......................... 49

vii

MỤC LỤC

LỜI CAM KẾT .................................................................................................. i

LỜI CẢM ƠN ................................................................................................... ii

DANH MỤC CHỮ VIẾT TẮT ....................................................................... iii

DANH MỤC CÁC BẢNG BIỂU .................................................................... iv

DANH SÁCH CÁC HÌNH ............................................................................... v

MỤC LỤC ....................................................................................................... vii

CHƯƠNG 1: GIỚI THIỆU ............................................................................... 1

1.1 Đặt vấn đề ............................................................................................. 1

1.2 Mục tiêu nghiên cứu ............................................................................. 1

1.3 Đối tượng và phạm vi nghiên cứu ........................................................ 1

1.4 Phương pháp nghiên cứu ...................................................................... 1

CHƯƠNG 2: TỔNG QUAN TÀI LIỆU NGHIÊN CỨU ................................. 3

2.1 Lý thuyết về trực quan hoá ................................................................... 3

2.2 Lý thuyết về phân cụm dữ liệu theo thuật toán K-Means .................... 6

2.3 Các tài liệu nghiên cứu phương pháp trực quan ...................................... 8

2.4 Trực quan hoá điểm tốt nghiệp sinh viên hiện thực hóa Python ............. 9

2.4.1 Thư viện Matplotlib ........................................................................... 9

2.4.2 Thư viện Pandas ............................................................................... 10

2.4.3 Thư viện numpy ............................................................................... 10

2.4.4 Thư viện Scikit – learn ..................................................................... 10

2.5 Khảo sát dữ liệu điểm sinh viên ............................................................. 11

CHƯƠNG 3: PHƯƠNG PHÁP NGHIÊN CỨU ............................................ 12

3.1 Xác định các biến và mô tả biểu đồ biểu diễn dữ liệu ........................... 12

3.1.1 Danh sách các biến .......................................................................... 12

3.1.2 Mô tả các biến .................................................................................. 12

viii

3.1.3 Xây dựng hàm toán học cho các biến .............................................. 14

3.2 Xây dựng biểu đồ trực quan hóa các biến dữ liệu điểm sinh viên ......... 14

3.2.1 Xây dựng bản dữ liệu điểm sinh viên .............................................. 14

3.2.2 Xây dựng biểu đồ 2D ....................................................................... 19

3.2.3 Xây dựng biểu đồ trực quan 3D ................................................... 29

3.3 Phương pháp chuyên gia phân cụm dữ liệu theo thuật toán K - Means 33

3.3.1 Xây dựng dữ liệu phân cụm dữ liệu theo thuật toán K - Means ...... 33

3.3.2 Xây dựng ứng dụng phân cụm K -Means bằng Python .................. 40

CHƯƠNG 4: XÂY DỰNG TẬP CÂU HỎI PHÂN TÍCH ............................ 46

4.1 Xây dựng tập dữ liệu câu hỏi phân tích và trả lời ........................... 46

4.2 Xây dựng tập câu hỏi và trả lời theo K – Means ............................. 48

CHƯƠNG 5: KẾT LUẬN .............................................................................. 50

TÀI LIỆU THAM KHẢO ............................................................................... 51

PHỤ LỤC CODE ............................................................................................ 53

1

CHƯƠNG 1: GIỚI THIỆU

1.1 Đặt vấn đề

Xu hướng hiện nay là các trường đại học, cao đẳng phải tiến tới tự chủ. Nhưng sau khi tự chủ để phát triển lâu dài và thu hút sinh viên thì còn nhiều việc phải giải quyết các vấn đề đặt ra như: Cơ sở vật chất thế nào, chất lượng đào tạo ra sao, sinh viên được đào tạo ra có đáp ứng và phù hợp với nhu cầu doanh nghiệp hay không, tỉ lệ sinh viên sau khi tốt nghiệp có việc làm là bao nhiêu? Làm đúng chuyên ngành sinh viên đã được trường đào tạo hay có việc làm ở một chuyên ngành khác… Để giải quyết những vấn đề này các nhà quản lý trường cần phải có những chính sách phù hợp cho từng vấn đề cụ thể trong đào tạo và tuyển sinh cũng như nhu cầu tuyển dụng của các nhà tuyển dụng.

Đối với một trường cao đẳng như Trường Cao đẳng Giao thông Vận tải Trung ương III, chất lượng đào tạo là một yếu tố quan trọng chi phối toàn bộ hoạt động của trường. Phân tích dữ liệu liên quan đến sinh viên tốt nghiệp bằng phương pháp trực quan là một tiếp cận được chọn để khảo sát tình trạng và kết quả giảng dạy của trường. Đề tài “Phân tích dữ liệu sinh viên tốt nghiệp bằng phương pháp trực quan” được đặt ra nhằm tìm kiếm thông tin hữu ích liên quan đến việc hình thành hoặc bổ sung các thông tin hỗ trợ nâng cao chất lượng đào tạo của Trường.

1.2 Mục tiêu nghiên cứu

Phân tích dữ liệu liên quan sinh viên đã tốt nghiệp bằng phương pháp

trực quan để hỗ trợ quyết định các chính sách nâng cao chất lượng đào tạo.

1.3 Đối tượng và phạm vi nghiên cứu

Dựa vào bảng điểm tốt nghiệp của sinh viên tại trường Trường Cao đẳng Giao thông Vận tải Trung ương III qua dữ liệu thu thập từ các năm của các khoa trong trường.

1.4 Phương pháp nghiên cứu

Phương pháp thống kê. Phương pháp thống kê áp dụng trong luận văn để thu thập, tổng hợp, trình bày dữ liệu sinh viên đã tốt nghiệp dưới dạng excel.

2

Phương pháp đồ họa. Phương pháp đồ họa được áp dụng trong luận

văn để biểu diễn dữ liệu dưới dạng các biểu đồ khác nhau.

Phương pháp phân tích. Phương pháp phân tích được áp dụng trong luận văn để phân tích dữ liệu liên quan sinh viên đã tốt nghiệp. Ứng dụng Python vào vẽ các biểu đồ ở dạng 2D và 3D để mô tả trực quan hóa các biến và tương quan giữa các biến. Từ đó rút ra các thông tin hữu ích để hỗ trợ quyết định các chính sách nâng cao chất lượng đào tạo.

3

CHƯƠNG 2: TỔNG QUAN TÀI LIỆU NGHIÊN CỨU

2.1 Lý thuyết về trực quan hoá

- Trực quan hóa (Visualization) là kỹ thuật tạo ra những hình ảnh, biểu đồ diễn tả các thông điệp, thông tin đến người dùng và minh họa dữ liệu sao cho dễ hiểu, phản ánh trung thực với số liệu.

- Biểu diễn trực quan hóa dữ liệu (Data Visualizations) là việc dùng những công cụ xử lý và phân tích dữ liệu để trả lời làm rõ những mục tiêu, chỉ ra tiềm năng đang có thông qua một hình thức trình bày dễ tiếp thu nhất bằng phương pháp thị giác, khối không gian và thời gian [1]. Hình 2.1 Biểu đồ minh họa cho quá trình trực quan hóa dữ liệu.

Hình 2.1: Biểu đồ minh họa trực quan

4

Các dạng biểu đồ tham khảo theo tài liệu [2]

- Biểu đồ cột đứng/ cột ngang: Là loại biểu đồ đơn giản nhất và trực

quan nhất, người xem sẽ thấy nhanh giá trị lớn nhất, bé nhất, so sánh dễ dàng các yếu tố liên quan.

Hình 2.2: Biểu đồ cột đứng

- Biểu đồ Pareto chart: biểu đồ cột mà các cột được sắp xếp từ thấp đến

cao theo tần số, còn các giá trị chỉ tần suất tích lũy được biểu diễn bằng đường thẳng.

Hình 2.3: Biểu đồ Pareto Chart

5

- Biểu đồ Area: giống biểu đồ đường thể hiện sự biến động đối tượng dữ

liệu theo xu hướng thời gian.

Hình 2.4: Biểu đồ Area

- Biểu đồ Line: là biểu đồ biểu diễn các giá trị dưới dạng những đường dùng để mô tả xu hướng biến động của dữ liệu phân tích và so sánh các yếu tố theo mốc thời gian

6

Hình 2.5: Biểu đồ Line

- Biểu đồ Line và Point kết hợp: là biểu đồ biểu diễn các giá trị dưới

dạng những đường và các điểm.

Hình 2.6: Biểu đồ Line Point

2.2 Lý thuyết về phân cụm dữ liệu theo thuật toán K-Means - Phân cụm dữ liệu hay phân cụm là kỹ thuật rất quan trọng trong khai phá dữ liệu thường ứng dụng thuật toán Data Clustering là một loại của nhóm thuật toán Unsupervised Learning. Các thuật toán trong khai phá và phân tích dữ liệu thuật toán Clustering là K-Nearest neighbors (KNN) hay thuật toán K- Mean. Có rất nhiều định nghĩa khác nhau về kỹ thuật khai phá dữ liệu, nhưng về bản chất ta có thể hiểu phân cụm là các qui trình nhóm các đối tượng đã cho vào một cụm, sao cho các đối tượng giống nhau vào 1 cụm [3-4]. K-Mean là thuật toán dùng để giải quyết bài toán như vậy.

- Thuật toán K-Mean:

j=1

Đầu vào dữ liệu: Số cụm k và các trọng tâm cụm {mj}k Đầu ra: Các cụm Ci (i = 1, k) và hàm tiêu chuẩn E đạt giá trị tối thiểu. Mô tả thuật toán

Bắt đầu Bước 1: Khởi tạo

Chọn k trọng tâm {mj}k

j=1 ban đầu trong không gian Rd (d là số chiều dài của dữ liệu). Việc lựa chọn này có thể là ngẫu nhiên hoặc theo kinh nghiệm.

7

Bước 2: Tính toán khoảng cách

Mỗi điểm Xi (1<=i<=n), tính toán khoảng cách của nó tới mỗi trọng tâm mj j=1, k. Tiếp đến tìm trọng tâm gần nhất đối với mỗi điểm. Bước 3: Cập nhật lại trọng tâm

Đối với mỗi j = 1, k, cập nhật trọng tâm cụm mj bằng cách

xác định trung bình cộng của các vector đối tượng dữ liệu.

Bước 4: Điều kiện dừng

Lặp lại bước 2, 3 cho đến khi nào các trọng tâm của cụm

không thay đổi.

Kết thúc

- Sơ đồ thuật toán được mô tả như Hình 2.7

Bắt đầu

Chọn k tâmngẫu nhiên

N o

Kết thúc

Tính khoảng cách trọng tâm

Không thay đổi nhóm

Yes

Phân nhóm gần nhất

Hình 2.7: Sơ đồ thuật toán K - Mean

8

2.3 Các tài liệu nghiên cứu phương pháp trực quan - Liên quan đến đề tài nghiên cứu có các công trình nghiên cứu của các nghiên cứu như sau:

➢ Tiếp cận nhận thức thị giác của con người để thiết kế hình ảnh, đồ thị trong trực quan hóa dữ liệu (Approaching human vision perception to designing visual graph in data visualization) – Trần Vĩnh Phước, Lê Xuân Trường: Biểu đồ cấu trúc biểu diễn mối quan hệ đa biến và nhận thức của con người, tích hợp thêm các biến võng mạc để cải thiện khách quan và phản hồi chủ quan thị giác của con người [1].

➢ Tích hợp các biến võng mạc vào biểu đồ hình ảnh hóa đa biến để tăng các tính năng trực quan (Integrating Retinal Variables into Graph Visualizing Multivariate Data to Increase Visual Features) – Hong Nguyen Thi, Cam Ngoc Thi Huynh, Thuan My Thi Pham, Anh Van Tran Thi, Pham Van Dang, Phuoc Vinh Tran: Bản đồ biểu diễn trực quan các biến dữ liệu theo không gian và thời gian trên bản đồ và biểu diễn đồ thị phân lớp để biểu diễn bệnh tay chân miệng [5].

➢ Trực quan hóa dữ liệu đa biến bằng cách tiếp cận hai gian đoạn phân loại các khối dữ liệu đa chiều (Two – Stage Approach to Classifying Multidimensional Cubes for Visualization of Multivariate Data, November 2018) - Hong Thi Nguyen, Thuan My Thi Pham, Tuyet Anh Thi Nguyen, Anh Van Thi Tran, Phuoc Vinh Tran and DangVan Pham: Trực quan hóa dữ liệu khối không gian và thời gian, khối dữ liệu đa chiều theo không gian và thời gian theo hai giai đoạn bao gồm lập bảng đồ trực quan và hiển thị trực quan với việc nhận thức từ võng mạc của người dùng[6-7].

➢ Visualization có quan trọng không? Vai trò của trực quan hóa dữ liệu

tương tác để có ý nghĩa của thông tin [8].

➢ Cải tiến thuật toán K -means và ứng dụng hỗ trợ sinh viên chọn chuyên ngành theo học chế tín chỉ - Nguyễn Văn Lễ, Mạnh Thiên Lý, Nguyễn Thị Định, Nguyễn Thị Thanh Thủy (2018), tác giả phân loại điểm sinh viên theo chuyên ngành dựa vào các môn học sử dụng thuật toán K – Mean và xây dựng phần mềm ứng dụng để phân cụm theo ngành học [9].

9

2.4 Trực quan hoá điểm tốt nghiệp sinh viên hiện thực hóa Python

2.4.1 Thư viện Matplotlib - Matplotlib là một thư viện cho người dùng để vẽ đồ thị trong Python và Numpy. Matplotlib có thể được sử dụng để tạo ra những figures đủ chất lượng cho một loạt các định dạng cố định và môi trường tương tác trên nền tảng ứng dụng.

- Thư viện Matplotlib figure được phân loại thành các thành phần như hình 2.8:

Hình 2.8: Minh họa thành phần Matplotlib figure [10]

Figure: nơi chứa tất cả những hình vẽ.

10

Axes: thành phần chính của một figure là các axes (có các khung nhỏ hơn để vẽ hình lên đó). Một figure có thể chứa một hoặc nhiều axes. Nói cách khác, figure chỉ là khung chứa, chính các axes mới là nơi các hình vẽ được vẽ lên.

Axis: là dòng số giống như các đối tượng, tạo giới hạn biểu đồ.

Artist: có thể nhìn thấy trên figure là một artist như Text object,

collection objects, line2D objects.

- Các dạng biểu đồ: Biểu đồ tròn, biểu đồ thanh, biểu đồ Histogram, sơ đồ phân tán và hệ tọa độ 3 chiều [10].

2.4.2 Thư viện Pandas - Pandas là một thư viện phần mềm viết cho ngôn ngữ lập trình Python được sử dụng cho thao tác và phân tích dữ liệu, cung cấp cấu trúc dữ liệu đặc biệt cho các thao tác của các bảng số liệu và chuỗi thời gian. Pandas có ba cấu trúc dữ liệu và nó được xây dựng dựa trên thư viện Numpy vậy nên chúng hoạt động rất nhanh và hiệu quả: Series, DataFrame, Panel [11].

2.4.3 Thư viện numpy - Thư viện Numpy là một thư viện toán học hỗ trợ mạnh trong Python, cho phép

làm việc hiệu quả với ma trận, mảng, tốc độ xử lý nhanh với dữ liệu lớn. Sở hữu kiểu dữ liệu lớn là Numpy Array và các hàm hỗ trợ xử lý dữ liệu. Thư viện này được phát triển để thao tác xử lý dữ liệu nhanh hơn, tiêu hao ít bộ nhớ [12].

2.4.4 Thư viện Scikit – learn - Thư viện Scikit – learn là thư viện (Sklearn) là thư viện mạnh mẽ hỗ trợ toán hoặc trong Python. Cài đặt Scikit – learn trước tiên phải cài thư viện SciPy (Scientific Python) gồm các thành phần: Numpy, Scipy, Matplotlib, IPython, SymPy, Pandas [13].

11

2.5 Khảo sát dữ liệu điểm sinh viên - Dữ liệu thu thập ban đầu sinh viên khóa 16CD, dữ liệu thu thập bằng file Excel gồm có điểm trung bình chung của năm 1, năm 2, năm 3, điểm thực tập chuyên ngành, điểm xét loại tốt nghiệp và xếp loại Bảng 2.1.

Bảng 2.1: Bảng điểm tốt nghiệp của Sinh viên

- Khảo sát những sinh viên đã tốt nghiệp và phản hồi khảo sát có bảng dữ liệu Bảng 2.2.

Bảng 2.2: Bảng điểm tốt nghiệp sinh viên tốt nghiệp và có việc làm

12

CHƯƠNG 3: PHƯƠNG PHÁP NGHIÊN CỨU

3.1 Xác định các biến và mô tả biểu đồ biểu diễn dữ liệu

3.1.1 Danh sách các biến - Biến phụ thuộc:

Mã sinh viên

Khoa

Điểm trung bình năm 1

Điểm trung bình năm 2

Điểm trung bình năm 3

Điểm thực tập chuyên ngành

Điểm xếp loại tốt nghiệp

Xếp loại tốt nghiệp

- Biến độc lập:

Thời gian học

Việc làm

3.1.2 Mô tả các biến - Mã sinh viên:

Xác định sinh viên theo học tại trường và khoa theo suốt quá trình học.

Kiểu dữ liệu: là kiểu chuỗi

-Khoa:

Xác định sinh viên theo học tại khoa theo suốt quá trình học.

Kiểu dữ liệu: là kiểu chuỗi

- Điểm trung bình năm 1:

13

Xác định kết quả trung bình học năm 1 của sinh viên theo học tại trường và khoa năm 1.

Kiểu dữ liệu: kiểu số thực nằm trong khoản từ 0 đến 10

- Điểm trung bình năm 2:

Xác định kết quả trung bình học năm 2 của sinh viên theo học tại trường và khoa năm 2.

Kiểu dữ liệu: kiểu số thực nằm trong khoản từ 0 đến 10

- Điểm trung bình năm 3:

Xác định kết quả trung bình học năm 3 của sinh viên theo học tại trường và khoa năm 3.

Kiểu dữ liệu: kiểu số thực nằm trong khoản từ 0 đến 10

- Điểm trung bình thực tập chuyên ngành:

Xác định kết quả thực tập chuyên ngành của sinh viên theo học tại trường và khoa.

Kiểu dữ liệu: kiểu số thực nằm trong khoản từ 0 đến 10

- Điểm trung bình tốt nghiệp:

Xác định kết quả trung bình học của sinh viên theo học tại trường và khoa.

Kiểu dữ liệu: kiểu số thực nằm trong khoản từ 0 đến 10

- Xếp loại tốt nghiệp:

Dựa trên kết quả trung bình học của sinh viên theo học tại trường và khoa để xếp loại đánh giá.

Kiểu dữ liệu: kiểu chuổi.

-Thời gian học:

Tính theo từng năm học của sinh viên theo học tại trường.

14

Kiểu dữ liệu: thời gian, năm.

- Việc làm tốt nghiệp:

Dựa trên kết quả khảo sát từng sinh viên sau khi đã tốt nghiệp và có việc làm.

Kiểu dữ liệu: True/ Fales.

3.1.3 Xây dựng hàm toán học cho các biến - Hàm toán học sẽ biểu diễn các biến dưới dạng ký hiệu toán học

Điểm trung bình năm 1: Ký hiệu là Y1

Điểm trung bình năm 2: Ký hiệu là Y2

Điểm trung bình năm 3: Ký hiệu là Y3

Điểm trung bình thực tập chuyên ngành: Ký hiệu là Ycn

Điểm trung bình tốt nghiệp: Ký hiệu Ytn

Xếp loại tốt nghiệp: Ký hiệu là C

Khoa: Ký hiệu là Khoa, Cơ khí chế tạo ký hiệu là Ct, Cơ khí động lực ký hiệu là Cl, Khoa Điện ký hiệu là D

Việc làm: Ký hiệu là J.

3.2 Xây dựng biểu đồ trực quan hóa các biến dữ liệu điểm sinh viên

3.2.1 Xây dựng bảng dữ liệu điểm sinh viên

Bảng 3.1: Bảng dữ liệu sinh viên xử lý

HO

GT

TEN

KHOA Y1 Y2 Y3 Ycn Ytn C

J

STT MASV

1 16CD4-036 Lê Nguyễn Nam Cl 7.2 6.3 7 7.4 Du 7.8 Khá X

2 16CD4-008 Đinh Bảo Huy Nam Cl 6.9 6.1 7.8 7.1 7.5 Khá X

3 16CD4-040 Mai Hoàng Long Nam Cl 5.9 5.8 8 6.7 6.3 TB khá

4 16CD1-018 Hồ Lê Thái Nho Nam Cl 7.2 7.7 8.7 8.2 7.9 Khá X

5 16CD3-036 Huỳnh Văn An 6.8 7 7.9 7.1 Nam D 7.3 Khá X

TB 6 16CD2-001 Châu Hoàng An Nam 7.5 6.9 7.7 6.5 6.2 Ct khá

7 16CD2-065 Võ Trường An 6.8 6.7 7 7.2 Nam Ct 7.5 Khá X

15

16CD4-039 Lê Công Anh Nam Cl 6.2 5.8 7.7 6.4 6.7 8 TB khá X

16CD3-038 Vũ Tuấn Anh 6.9 7.2 7.9 7 7.1 Khá 9 Nam D

16CD41- 7 Dương Thái Bảo Nam Cl 7.2 6.3 7.4 7.7 Khá 10 036 X

7 11 16CD1-001 Giang Đình Bảo Nam Cl 7.6 7 7.6 7.6 Khá X

12 16CD3-039 Vũ Minh Cảnh Nam 6.2 5.8 7.7 6.4 6.1 TB khá D

13 16CD1-002 Hong A Cầu Nam Cl 7.3 6.8 7.8 7.5 7.5 Khá X

TB 14 16CD2-002 Huỳnh Phúc Châu Nam 7.9 7.4 7.5 7.4 6.9 Khá Ct

16CD1-003 Phạm Quốc Công Nam Cl 7.1 6.9 7.8 7.6 15 7.9 Khá X

7 16CD1-004 Lê Tiến Công Nam Cl 7.1 6.9 7.6 16 7.3 Khá X

Cườn TB 8 17 16CD3-040 Phạm Phú 5.9 5.8 6.7 6.3 Nam g D khá

7 16CD4-004 Võ Hoàng 7.1 6.9 7.6 Đa Nam Cl 18 7.9 Khá X

16CD4-084 Tạ Hữu Đang Nam Cl 7.3 6.7 7.8 7.6 19 7.5 Khá X

TB 20 16CD2-049 Trần Lê Công Danh Nam 6.8 6.6 7.2 6.8 6.2 Ct khá

16CD1-084 Bùi Công Đạt Nam Cl 7.3 6.7 7.8 7.6 21 7.3 Khá X

16CD1-016 Huỳnh Hoàng Đạt Nam Cl 7.9 7.1 7.8 7.8 22 7.6 Khá X

16CD1-005 Trần Công Đạt Nam Cl 6.9 6.6 7.8 7.3 7.1 Khá 23

24 16CD1-019 Lê Văn Đông Nam Cl 7.2 6.5 6.9 7.1 6.8 TB Khá

25 16CD1-020 Đức Nam Cl 7.1 6.7 7.8 7.6 7.4 Khá Nguyễn Hoàng X

Dươn 26 16CD4-003 Lục Duy Nam Cl 7.1 6.9 7.8 7.6 7.8 Khá g X

Dươn TB 7 27 16CD2-007 Đỗ Văn 7.1 6.8 6.7 6.3 Nam Ct g khá

7 28 16CD4-001 Duy Nam Cl 7.6 7 7.6 7.5 Khá Nguyễn Huỳnh X

Trương 29 16CD4-002 Duy Nam Cl 7.3 6.8 7.8 7.5 7.6 Khá Hoàng X

16CD4-016 Phan Hoàng Giang Nam Cl 7.9 7.1 7.8 7.8 30 7.7 Khá X

16CD1-006 Ngô Đình Giang Nam Cl 7 6.5 6.9 7.6 31 7.3 Khá X

32 16CD2-012 Đoàn Thanh Hải Nam 7.2 6.8 7.3 6.7 6.9 TB khá X Ct

33 16CD4-005 Nguyễn Văn Hào Nam Cl 6.9 6.6 7.8 7.3 7.5 Khá

TB 34 16CD3-041 Ngô Hoàng Hảo Nam 7.2 7.2 7.9 6.6 6.9 khá D

16CD4-019 Lữ Trung Hậu Nam Cl 7.2 6.5 6.9 7.1 6.9 Khá 35

16CD1-007 Đoàn Xuân Hiệp Nam Cl 7.1 6.5 7.9 7.6 36 7.4 Khá X

16CD1-008 Lê Ngọc Hiếu Nam Cl 6.9 6.1 7.8 7.5 37 7.3 Khá X

16

38 16CD4-020 Nguyễn Minh Nam Cl 7.1 6.7 7.8 7.6 7.5 Khá Hoàn g X

Hoàn 16CD1- 39 Phạm Lê Huy Nam Cl 6.9 6.5 7.8 6.9 7.0 Khá g 037 X

Hoàn 40 16CD3-069 Nguyễn Minh Nam 6.6 5.9 8 7.2 7.0 Khá D g

Nam 41 16CD3-042 Phan Thanh 6.7 7 8.1 7 7.4 Khá D Hoàn g X

Hoàn TB Nam 42 16CD2-061 Nguyễn Đức 6.8 6.5 6.9 6.4 6.1 Ct g khá

TB 43 16CD2-058 Nguyễn Thái Học Nam 7.4 6.8 7.5 6.6 6.8 Ct khá X

44 16CD4-006 Mã Phi Hùng Nam Cl 7 7.5 6.9 7.6 7.4 Khá X

45 16CD4-007 Võ Đức Hùng Nam Cl 7.1 6.5 7.9 7.6 7.6 Khá X

Trần Nguyễn TB 46 16CD1-050 Hùng Nam 6.5 6.9 7.7 6.7 6.9 D Viết khá X

47 16CD3-043 Vũ Mạnh 7.4 7.3 8 7 Hùng Nam D 7.4 Khá X

48 16CD1-009 Lê Minh Huy Nam Cl 7 6.6 7.9 7.1 7.0 Khá

TB 49 16CD1-010 Lê Võ Minh Huy Nam Cl 6.8 6.3 7.8 6.8 7.4 khá X

50 16CD1-011 Võ Quang Huy Nam Cl 7.9 7.7 8.9 8 8.2 Giỏi X

51 16CD3-044 Huỳnh Thanh Huy 6.5 6.5 7.9 7 6.8 Khá Nam D

52 16CD4-010 Bùi Trung Kha Nam Cl 6.8 6.3 7.8 6.8 7.3 TB khá X

Khan 53 16CD4-011 Thân Công Nam Cl 7.9 7.7 8.9 8 8.3 Giỏi h X

Khán 54 16CD4-013 Hồ Duy Nam Cl 6.9 6.5 7.8 7.3 6.9 Khá h

55 16CD4-009 Võ Anh Kiệt Nam Cl 7 6.6 7.9 7.1 6.9 Khá

56 Ngô Hoàng Kim Nam Cl 6.9 6.5 7.8 6.9 7.3 16CD4- 037 TB khá X

57 16CD4-080 Lê Nhựt Linh Nam Cl 7.6 7 7.9 7.8 7.6 Khá X

58 16CD4-014 Lê Văn Lợi Nam Cl 7.2 7.9 7.8 7.5 7.7 Khá X

59 16CD1-013 Châu Quang Lợi Nam Cl 6.9 6.5 7.8 7.3 6.9 Khá

TB 60 16CD3-046 Trần Thế Long Nam 7.1 7 7.7 6.9 7.1 D khá X

61 16CD2-054 Lương Văn 7.2 7.2 7.1 7.2 6.7 Khá Luân Nam Ct

Lượn 62 16CD1-080 Võ Ngọc Nam Cl 7.6 7.8 7.9 7.5 7.8 Khá g X

Nguyễn Lê 63 16C41-015 Minh Nam Cl 7.8 7.9 7.9 8.6 8.1 Giỏi Bình X

64 16CD1-014 Trần Võ Phát Minh Nam Cl 7.2 7 7.8 7.1 7.2 Khá

65 7.9 7.8 7.8 7.1 16CD3-070 Nguyễn Ngọc Minh Nam D 7.7 Khá X

66 16CD4-026 Nguyễn Ngọc Minh Nam Cl 6.9 6.4 8.6 7.5 7 Khá

67 16CD1-015 Bùi Gia Môn Nam Cl 7.8 8.4 7.9 8.8 8.3 Giỏi X

17

68 16CD3-047 Na Ra Nam 6.9 7.3 7.9 7.7 7.5 Khá D Thạch Sa Oanh X

Nguyễn TB 69 16CD1-017 Nghĩa Nam Cl 6.7 6.3 6.9 6.9 6.7 Thành khá

Quách Hoàng Nguy TB 70 16CD2-021 Nam 7.4 7.5 7.6 6.8 7.3 Gia Ct khá X ên

71 16CD4-017 Nam Cl 6.7 6.3 6.9 6.9 6.7 Trần Lê Trọng Nguy ễn TB khá

72 16CD4-018 Nguyễn Duy Nhân Nam Cl 7.2 7.4 8.7 7.8 7.7 Khá X

73 16CD4-021 Nguyễn Quốc Nhân Nam Cl 7.2 7.5 7.9 7.9 7.5 Khá X

74 16CD4-022 Nhân Nam Cl 7.1 6.4 7.9 7.4 7.1 Khá Văn Công Thành

75 16CD2-066 Trần Ngọc Nhất Nam 6.3 6.6 6.8 6.7 6.5 Ct TB khá

76 16CD3-048 Bùi Minh Nhí 7.9 8.2 9.2 8.2 Nam D 8.7 Giỏi X

TB 77 16CD2-024 Y Đông Niê Nam 7.2 6.9 7.4 7.9 7.3 Ct khá X

TB 78 16CD3-049 Phan Nhật Phàm Nam 6.2 7.1 7.9 6.6 6.8 D khá X

79 16CD4-023 Huỳnh Tấn Phát Nam Cl 7.2 6.7 7 7.3 7.1 Khá

80 16CD4-024 Nguyễn Ngọc Phát Nam Cl 7.5 7.3 7.9 7.9 7.7 Khá X

81 16CD1-021 Lê Năng Phát Nam Cl 7.2 7.1 7.9 7.8 7.7 Khá X

82 16CD1-022 Phát Nam Cl 7.1 7.4 7.9 7.4 7.4 Khá Lưu Nguyễn Gia X

TB 83 16CD2-056 Nguyễn Văn Phát Nam 6 6.3 6.3 6.2 6,2 Ct khá

84 16CD1-023 Nguyễn Văn Phi Nam Cl 7.2 6.7 7.1 7.3 7.1 Khá

85 16CD1-024 Trương Du Nam Cl 7.5 7.3 7.7 7.8 Phố 7.5 Khá X

Phon 86 16CD2-030 Dương Minh Nam Cl 7.3 7.7 7.9 7.2 7.6 Khá g X

87 16CD4-030 Hồ Minh Nam Cl 7.3 6.7 7.9 7.2 Phú 7.4 Khá X

Phụn TB 88 16CD3-063 Hồ Minh 6.3 6.4 7.2 6.8 6.2 Nam D g khá

Phươ 89 16CD4-025 Đỗ Minh Nam Cl 8 7.5 7.8 7.6 7.8 Khá ng X

90 16CD4-038 Nguyễn Duy Nam Cl 6.9 7.2 7.9 7 7.6 Khá Phươ ng X

Huỳnh Trang Phươ TB 91 16CD2-047 Nam 7.5 6.7 7.7 6.6 6.9 Dũng ng Ct khá

92 16CD1-025 Bùi Văn Quân Nam Cl 8 7.5 7.8 7.6 7.8 Khá X

TB 93 16CD4-027 Lê Anh Quốc Nam Cl 7.8 7.4 6.9 6.9 7.2 khá X

Trần Văn 94 16CD1-026 Quốc Nam Cl 6.9 6.4 8.6 7.5 7.1 Khá Huy

95 16CD4-028 Sơn Nam Cl 6.7 6.3 8.7 7.8 8 Khá Trần Nguyễn Thái

18

96 16CD3-052 Sơn Nam 6.5 6.6 7.7 6.8 6.4 D Lâm Văn Hồng TB khá X

97 16CD4-029 Đặng Quốc Sự Nam Cl 7.2 7.4 7.9 7.4 7.1 Khá X

98 16CD2-035 Lê Công Sửu 7.9 7.7 7.8 7.4 Nam Ct 7.3 Khá X

99 16CD1-027 Tài Nam Cl 7.8 7.4 6.9 6.9 6.8 Nguyễn Phước TB khá X

100 16CD1-028 Phùng Thế Nam Cl 6.7 6.3 8.7 7.8 7.1 Khá Tài

101 16CD3-065 Trương Văn 7.2 6.7 7.5 7.1 Tân Nam D 7.9 Khá X

102 16CD3-053 Huỳnh Văn 7.1 7.6 8 7.6 Tấn Nam D 7.9 Khá X

103 16CD1-029 Phạm Văn Thạch Nam Cl 7.2 7.4 7.9 7.4 7 Khá

Than 104 16CD2-053 Vi Văn Nam 7.4 7.1 7.5 7.1 7.5 Khá Ct X h

Nguyễn Đăng TB 105 16CD3-055 Thiết Nam 5.5 5 7.8 6.9 7.3 Phan D khá X

106 16CD1-030 Kiều Ngọc Thịnh Nam Cl 7.2 7.1 7.4 7.9 7.8 Khá X

107 16CD1-031 Trần Công Thịnh Nam Cl 7.1 6.4 7.3 6.8 Khá 7

Thuậ 108 16CD1-032 Nguyễn Hữu Nam Cl 7.2 6.7 7.2 7.7 Khá 7 n X

Thuậ 109 16CD3-056 Nguyễn Minh 8.1 7.9 9.2 8.1 8.9 Giỏi Nam D n X

110 16CD1-012 Thục Nam Cl 6.5 6.3 6.9 7.2 7.5 Khá Trương Quang X

Thươ 111 16CD4-044 Đỗ Văn Nam Cl 8 7.5 8.6 7.5 8.1 Khá ng X

112 16CD3-057 Lâm Văn Nam D 7.1 7 8 7.3 7 Khá Tín

113 16CD4-030 Trương Công Toại Nam Cl 7.2 7.1 7.9 7.4 7.7 Khá X

114 16CD1-033 Toàn Nam Cl 7.3 6.7 6.8 7.6 7.7 Khá Huỳnh Đức Song

115 16CD3-059 Nguyễn Đình Toản Nam D 6.7 7.2 8 7.1 7.8 Khá X

116 16CD4-035 Trương Bảo Trí Nam Cl 6.9 6.4 8.6 7.4 7.9 Khá X

117 16CD2-044 Nguyễn Vũ Nam Cl 8 7.5 8.6 7.5 8.2 Khá Trườn g X

118 16CD4-031 Trần Xuân Tú Nam Cl 7.1 6.4 7 7.3 6.7 Khá

119 16CD4-032 Phạm Hồng Tuấn Nam Cl 7.2 6.7 7 7.2 7.6 Khá X

Nguyễn 120 16CD1-035 Tuấn Nam Cl 6.9 6.4 8.6 7.4 7.9 Khá X Hoàng

121 16CD4-012 Tùng Nam Cl 6.5 6.3 6.9 7.2 7.2 Khá Nguyễn Thanh X

Nguyễn Đại 122 16CD4-033 Tùng Nam Cl 7.3 6.7 6.8 7.6 7.5 Khá Hoàng

123 16CD3-062 Võ Hoàng Vi Nam D 7.1 6.7 7.9 7.2 7.4 Khá X

124 16CD4-036 Phan Tấn Vũ Nam Cl 6.8 7 7.9 7.1 7.1 Khá X

19

- Bảng dữ liệu điểm của sinh viên gồm có 10 biến Mã sinh viên, khoa,

điểm năm 1, điểm năm 2, điểm năm 3, điểm thực tập chuyên ngành, điểm trung bình, xếp loại và có việc làm.

3.2.2 Xây dựng biểu đồ 2D

3.2.2.1 Biểu đồ dạng cột - Biểu đồ dạng cột biểu diễn dữ liệu điểm sinh viên Khoa Cơ khí động lực. Các cột biểu diễn theo màu để phân biệt cột màu xanh biểu diễn đểm năm 1, cột màu đỏ biểu diễn điểm trung bình của sinh viên năm 2, cột màu xanh nước biển biểu diễn điểm năm thứ 3 của sinh viên, cột màu vàng biểu diễn điểm chuyên ngành của sinh viên và cột màu hồng biểu diễn điểm của sinh viên tốt nghiệp.

- Biểu đồ dạng cột biểu diễn dữ liệu điểm sinh viên Khoa Cơ khí chế tạo. Các cột biểu diễn theo màu để phân biệt cột màu xanh biểu diễn đểm năm 1, cột màu đỏ biểu diễn điểm trung bình của sinh viên năm 2, cột màu xanh nước biển biểu diễn điểm năm thứ 3 của sinh viên, cột màu vàng biểu diễn điểm chuyên ngành của sinh viên và cột màu hồng biểu diễn điểm của sinh viên tốt nghiệp.

- Biểu đồ dạng cột biểu diễn dữ liệu điểm sinh viên Khoa Điện. Các cột biểu diễn theo màu để phân biệt cột màu xanh biểu diễn đểm năm 1, cột màu đỏ biểu diễn điểm trung bình của sinh viên năm 2, cột màu xanh nước biển biểu diễn điểm năm thứ 3 của sinh viên, cột màu vàng biểu diễn điểm chuyên ngành của sinh viên và cột màu hồng biểu diễn điểm của sinh viên tốt nghiệp.

- Biểu đồ dạng cột biểu diễn dữ liệu điểm sinh viên toàn khóa học. Các cột biểu diễn theo màu để phân biệt cột màu xanh biểu diễn đểm năm 1, cột màu đỏ biểu diễn điểm trung bình của sinh viên năm 2, cột màu xanh nước biển biểu diễn điểm năm thứ 3 của sinh viên, cột màu vàng biểu diễn điểm chuyên ngành của sinh viên và cột màu hồng biểu diễn điểm của sinh viên tốt nghiệp minh họa như Hình 3.1.

20

Hình 3.1: Biểu đồ cột biểu diễn điểm toàn khóa Sinh Viên

3.2.2.2 Biểu đồ dạng đường

- Biểu đồ dạng đường biểu diễn dữ liệu điểm sinh viên Khoa Cơ khí động lực. Các đường biểu diễn theo màu để phân biệt đường màu xanh biểu diễn đểm năm 1, đường màu đỏ biểu diễn điểm trung bình của sinh viên năm 2, đường màu xanh nước biển biểu diễn điểm năm thứ 3 của sinh viên, đường màu vàng biểu diễn điểm chuyên ngành của sinh viên và đường màu hồng biểu diễn điểm tốt nghiệp của sinh viên được thể hiện như Hình 3.2.

Hình 3.2: Biểu đồ dạng đường biểu diễn điểm Sinh viên Cơ khí động lực

- Biểu đồ dạng đường biểu diễn dữ liệu điểm sinh viên Khoa Cơ khí chế tạo.Cácđường biểu diễn theo màu để phân biệt đường màu xanh biểu diễn đểm năm 1, đường màu đỏ biểu diễn điểm trung bình của sinh viên năm 2, đường màu xanh nước biển biểu diễn điểm năm thứ 3 của sinh viên, đường màu vàng

21

biểu diễn điểm chuyên ngành của sinh viên và đường màu hồng biểu diễn điểm tốt nghiệp của sinh viên được thể hiện như Hình3.3.

Hình 3.3: Biểu đồ dạng đường biểu diễn điểm Sinh viên Cơ khí chế tạo

- Biểu đồ dạng đường biểu diễn dữ liệu điểm sinh viên Khoa Điện. Các đường biểu diễn theo màu để phân biệt đường màu xanh biểu diễn đểm năm 1, đường màu đỏ biểu diễn điểm trung bình của sinh viên năm 2, đường màu xanh nước biển biểu diễn điểm năm thứ 3 của sinh viên, đường màu vàng biểu diễn điểm chuyên ngành của sinh viên và đường màu hồng biểu diễn điểm tốt nghiệp của sinh viên tốt được thể hiện như Hình3.4.

Hình 3.4: Biểu đồ dạng đường biểu diễn điểm Sinh viên Khoa Điện

- Biểu đồ dạng đường biểu diễn dữ liệu điểm sinh viên toàn khóa học. Các đường biểu diễn theo màu để phân biệt đường màu xanh biểu diễn đểm năm 1, đường màu đỏ biểu diễn điểm trung bình của sinh viên năm 2, đường màu xanh nước biển biểu diễn điểm năm thứ 3 của sinh viên, đường màu vàng

22

biểu diễn điểm chuyên ngành của sinh viên và đường màu hồng biểu diễn điểm tốt nghiệp của sinh viên được thể hiện như Hình3.5.

Hình 3.5: Biểu đồ dạng đường biểu diễn điểm Sinh viên toàn khóa

3.2.2.3 Biểu đồ dạng đường so sánh - Biểu đồ dạng đườngso sánh biểu diễn dữ liệu điểm sinh viên Khoa Cơ khí động lực. Hình (a) biểu diễn điểm năm 1 của sinh viên, Hình (b) biểu diễn điểm năm 2 của sinh viên, Hình (c) biểu diễn điểm năm 3 của sinh viên, Hình (d) biểu diễn điểm thực tập chuyên ngành của sinh viên, Hình (e) biểu diễn điểm điểm tốt nghiệp của sinh viên được thể hiện như Hình 3.6.

Hình 3.6: Biểu đồ đường so sánh biểu diễn điểm Sinh viên Cơ khí động lực

- Biểu đồ dạng đường so sánh biểu diễn dữ liệu điểm sinh viên Khoa Cơ khí chế tạo. Hình (a) biểu diễn điểm năm 1 của sinh viên, Hình (b) biểu diễn điểm năm 2 của sinh viên, Hình (c) biểu diễn điểm năm 3 của sinh viên, Hình

23

(d) biểu diễn điểm thực tập chuyên ngành của sinh viên, Hình (e) biểu diễn điểm điểm tốt nghiệp của sinh viên được thể hiện như Hình3.7.

Hình 3.7: Biểu đồ đường so sánh biểu diễn điểm Sinh viên Cơ khí chế tạo

- Biểu đồ dạng đường so sánh biểu diễn dữ liệu điểm sinh viên Khoa Điện. Hình (a) biểu diễn điểm năm 1 của sinh viên, Hình (b) biểu diễn điểm năm 2 của sinh viên, Hình (c) biểu diễn điểm năm của 3 sinh viên, Hình (d) biểu diễn điểm thực tập chuyên ngành của sinh viên, Hình (e) biểu diễn điểm điểm tốt nghiệp của sinh viên được thể hiện như Hình 3.8.

Hình 3.8: Biểu đồ đường so sánh biểu diễn điểm Sinh viên Khoa Điện

- Biểu đồ dạng đường so sánh biểu diễn dữ liệu điểm sinh viên toàn khóa học. Hình (a) biểu diễn điểm năm 1 của sinh viên, Hình (b) biểu diễn điểm năm

24

2 của sinh viên, Hình (c) biểu diễn điểm năm của 3 sinh viên, Hình (d) biểu diễn điểm thực tập chuyên ngành của sinh viên, Hình (e) biểu diễn điểm điểm tốt nghiệp của sinh viên được thể hiện như Hình3.9.

Hình 3.9: Biểu đồ đường so sánh biểu diễn điểm Sinh viên toàn khóa

3.2.2.4 Biểu đồ dạng đường điểm - Biểu đồ dạng điểm biểu diễn dữ liệu điểm sinh viên Khoa Cơ khí động lực. Hình (a) màu đỏ biểu diễn điểm năm 1 của sinh viên, Hình (b) màu vàng biểu diễn điểm năm 2 của sinh viên, Hình (c) màu xanh biển biểu diễn điểm năm 3 của sinh viên, Hình (d) màu xanh biểu diễn điểm thực tập chuyên ngành của sinh viên, Hình (e) màu hồng biểu diễn điểm điểm tốt nghiệp của sinh viên được thể hiện như Hình 3.10.

Hình 3.10: Biểu đồ đường điểm biểu diễn điểm SV Cơ khí động lực

- Biểu đồ dạng điểm biểu diễn dữ liệu điểm sinh viên Khoa Cơ khí chế tạo. Hình (a) màu đỏ biểu diễn điểm năm 1 của sinh viên, Hình (b) màu vàng

25

biểu diễn điểm năm 2 của sinh viên, Hình (c) màu xanh biển biểu diễn điểm năm 3 của sinh viên, Hình (d) màu xanh biểu diễn điểm thực tập chuyên ngành của sinh viên, Hình (e) màu hồng biểu diễn điểm điểm tốt nghiệp của sinh viên được thể hiện như Hình 3.11.

Hình 3.11: Biểu đồ đường điểm biểu diễn điểm SV Cơ chế tạo

- Biểu đồ dạng điểm biểu diễn dữ liệu điểm sinh viên Khoa Điện. Hình (a) màu đỏ biểu diễn điểm năm 1 của sinh viên, Hình (b) màu vàng biểu diễn điểm năm của 2 sinh viên, Hình (c) màu xanh biển biểu diễn điểm năm 3 của sinh viên, Hình (d) màu xanh biểu diễn điểm thực tập chuyên ngành của sinh viên, Hình (e) màu hồng biểu diễn điểm điểm tốt nghiệp của sinh viên được thể hiện như Hình 3.12.

Hình 3.12: Biểu đồ đường điểm biểu diễn điểm SV Khoa Điện

26

- Biểu đồ dạng điểm biểu diễn dữ liệu điểm sinh viên toàn khóa học. Hình (a) màu đỏ biểu diễn điểm năm 1 của sinh viên, Hình (b) màu vàng biểu diễn điểm năm 2 của sinh viên, Hình (c) màu xanh biển biểu diễn điểm năm 3 của sinh viên, Hình (d) màu xanh biểu diễn điểm thực tập chuyên ngành của sinh viên, Hình (e) màu hồng biểu diễn điểm điểm tốt nghiệp của sinh viên được thể hiện như Hình 3.13.

Hình 3.13: Biểu đồ đường điểm biểu diễn điểm Sinh viên toàn khóa

- Biểu đồ dạng điểm biểu diễn dữ liệu điểm thực tập chuyên ngành và điểm tốt nghiệp của các khoa trên 1 biểu đồ 3 hình và hai đường dữ liệu. Hình (a) màu xanh Ytn là điểm trung bình tốt nghiệp của sinh viên, đường màu xanh da trời Ycn biểu diễn điểm thực tập chuyên ngành sinh viên khoa Cơ khí động lực; hình (b) đường màu xanh lá Ytn biểu diểm điểm tốt nghiệp sinh viên, đường màu vàng Ycn biểu diễn điểm thực tập chuyên ngành của sinh viên Cơ khí chế tạo; hình (c) đường màu đỏ biểu diễn điểm tốt nghiệp của sinh viên, đường màu hồng Ycn biểu diễn điểm thực tập chuyên ngành sinh viên khoa Điện biểu diễn điểm sinh viên theo Hình 3.14.

Hình 3.14: Biểu diễn điểm chuyên ngành và điểm tốt nghiệp SV

27

- Biểu đồ dạng điểm và đường biểu diễn dữ liệu điểm thực tập chuyên ngành và điểm tốt nghiệp của sinh viên trên hai đường dữ liệu. Đường màu xanh biểu diễn điểm tốt nghiệp sinh viên, đường màu vàng biểu diễn điểm thực tập chuyên ngành của sinh viên tốt nghiệp theo Hình 3.15.

Hình 3.15: Biểu diễn điểm chuyên ngành, tốt nghiệp SV

- Biểu đồ dạng đường biểu diễn dữ liệu điểm tốt nghiệp của sinh viên trên ba đường dữ liệu. Đường màu xanh lá biểu diễn điểm tốt nghiệp sinh viên khoa Cơ khí động lực, đường màu đỏ biểu diễn điểm tốt nghiệp của sinh viên Cơ khí chế tạo và đường màu xanh nước biển biểu diễn điểm tốt nghiệp sinh viên khoa Điện theo Hình 3.16.

Hình 3.16: Điểm trung bình tốt nghiệp SV

- Biểu đồ dạng đường và điểm biểu diễn dữ liệu điểm điểm thực tập chuyên ngành, điểm tốt nghiệp của sinh viên. Hình (a) biểu diễm điểm thực tập chuyên ngành của sinh viên, đường màu xanh biểu diễn điểm chuyên ngành

28

sinh viên có việc làm và đường màu xanh dương biểu diễn điểm thực tập chuyên ngành của sinh viên chưa có việc làm; hình (b) biểu diễm điểm tốt nghiệp của sinh viên, đường màu xanh biểu diễn điểm trung bình tốt nghiệp sinh viên có việc làm và đường màu xanh dương biểu diễn điểm tốt nghiệp của sinh viên chưa có việc làm Hình 3.17.

Hình 3.17: Biểu diễn điểm SV có việc và chưa có việc

- Biểu đồ biểu diễn dữ liệu điểm điểm thực tập chuyên ngành điểm tốt nghiệp của sinh viên có việc làm và chưa có việc làm trên bốn đường biểu diễn đường màu xanh dương biểu diển điểm chuyên ngành sinh viên chưa có việc làm, đường màu vàng biểu diễn điểm thực tập chuyên ngành sinh viên có việc làm; đường màu đỏ biểu diễn điểm tốt nghiệp sinh viên chưa có việc làm và đường màu xanh biểu diễn điểm tốt nghiệp sinh viên có việc làm theo Hình 3.18.

Hình 3.18: Biểu diễn điểm SV có việc và chưa có việc

29

3.2.3 Xây dựng biểu đồ trực quan 3D

- Biểu đồ biểu diễn trực quan dữ liệu điểm sinh viên năm thứ 1 của 3 khoa, trên hệ tọa Descartes 3 chiều với các trục x, y, z biểu diễn số lượng sinh viên, khoa và điểm theo Hình 3.19.

Hình 3.19: Biểu diễn 3 chiều điểm SV năm 1

- Biểu đồ biểu diễn trực quan dữ liệu điểm sinh viên năm thứ 2 của 3 khoa, trên hệ tọa Descartes 3 chiều với các trục x, y, z biểu diễn số lượng sinh viên, khoa và điểm theo Hình 3.20.

Hình 3.20: Biểu diễn 3 chiều điểm SV năm 2

30

- Biểu đồ biểu diễn trực quan dữ liệu điểm sinh viên năm thứ 3 của 3 khoa, trên hệ tọa Descartes 3 chiều với các trục x, y, z biểu diễn số lượng sinh viên, khoa và điểm theo Hình 3.21.

Hình 3.21: Biểu diễn 3 chiều điểm SV năm 3

- Biểu đồ biểu diễn trực quan dữ liệu điểm thực tập chuyên ngành của 3 khoa, trên hệ tọa Descartes 3 chiều với các trục x, y, z biểu diễn số lượng sinh viên, khoa và điểm theo Hình 3.22.

31

Hình 3.22: Biểu diễn 3 chiều điểm SV chuyên ngành

- Biểu đồ biểu diễn trực quan dữ liệu điểm tốt nghiệp sinh viên của 3 khoa, trên hệ tọa Descartes 3 chiều với các trục x, y, z biểu diễn số lượng sinh viên, khoa và điểm theo Hình 3.23.

Hình 3.23: Biểu diễn 3 chiều điểm tốt nghiệp SV

- Biểu đồ biểu diễn trực quan dữ liệu điểm năm 1, năm 2, năm 3, thực tập chuyên ngành, điểm tốt nghiệp sinh viên của khoa Cơ khí động lực, trên hệ tọa Descartes 3 chiều với các trục x, y, z biểu diễn số lượng sinh viên, khoa và điểm theo Hình 3.24.

32

Hình 3.24: Biểu diễn điểm SV khoa cơ khí động lực

- Biểu đồ biểu diễn trực quan dữ liệu điểm năm 1, năm 2, năm 3, thực tập chuyên ngành, tốt nghiệp sinh viên của khoa Cơ khí chế tạo, trên hệ tọa Descartes 3 chiều với các trục x, y, z biểu diễn số lượng sinh viên, khoa và điểm theo Hình 3.25.

Hình 3.25: Biểu diễn 3 chiều điểm SV cơ khí chế tạo

Biểu đồ biểu diễn trực quan dữ liệu điểm năm 1, năm 2, năm 3, thực tập chuyên ngành, tốt nghiệp sinh viên của khoa Điện, trên hệ tọa Descartes 3 chiều với các trục x, y, z biểu diễn số lượng sinh viên, khoa và điểm theo Hình 3.26.

Hình 3.26: Biểu diễn 3 chiều điểm SV khoa điện

33

3.3 Phương pháp chuyên gia phân cụm dữ liệu theo thuật toán K - Means

3.3.1 Xây dựng dữ liệu phân cụm dữ liệu theo thuật toán K - Means

- Bảng dữ liệu điểm của sinh viên gồm có 5 biến điểm Y1, Y2, Y3,

Ycn, Ytn của 3 khoa và có 124 sinh viên được thể hiện như Bảng 3.2.

Bảng 3.1: Bảng dữ liệu điểm SV thuật toán K -Means

34

- Có 124 sinh viên và điểm của năm 1 là Y1, năm 2 là Y2, năm 3 là Y3, điểm chuyên ngành là Ycn, điểm trung bình tốt nghiệp là Ytn, giả sử ta phân ngẫu nhiên làm 03 cụm như sau:

Cụm 1: Khởi tạo trọng tâm C1 là dòng 1 (7.2, 6.3, 7.0, 7.8, 7.4) Cụm 2: Khởi tạo trọng tâm C2 là dòng 42 (6.8, 6.5, 6.9, 6.1, 6.4) Cụm 3: Khởi tạo trọng tâm C3 là dòng 109 (8.1, 7.9, 9.2, 8.9, 8.1)

Khởi tạo: Chọn 3 cụm C1, C2, C3 ngẫu nhiên với k=3.

Bước 1: Chọn 3 cụm C1, C2, C3 ngẫu nhiên với k=1 theo Bảng 3.3.

Bảng 3.2: Bảng dữ liệu cụm ngẫu nhiên k = 1

Y1

Y2

Y3

Ycn

Ytn

C1

7.2

6.3

7.0

7.8

7.4

C2

6.8

6.5

6.9

6.1

6.4

C3

8.1

7.9

9.2

8.9

8.1

Bước 2.1: Tính khoảng cách đến các điểm đến tâm cụm

Tính khoảng cách sinh viên thứ 1 đến tâm cụm C1:

√(|7.2 − 7.2|)2 + (|6.3 − 6.3|)2 + (|7.0 − 7.0|)2 + (|7.8 − 7.8|)2 + (|7.4 − 7.4|)2 =

√0 = 0

(Công thức 3.1)

Tính khoảng cách sinh viên thứ nhất đến tâm cụm C2:

√(|7.2 − 6.8|)2 + (|6.3 − 6.5|)2 + (|7.0 − 6.9|)2 + (|7.8 − 6.1|)2 + (|7.4 − 6.4|)2 =

√4.1 = 2.0(Công thức 3.2)

Tính khoảng cách sinh viên thứ nhất đến tâm cụm C3:

√(|7.2 − 8.1|)2 + (|6.3 − 7.9|)2 + (|7.0 − 9.2|)2 + (|7.8 − 8.9|)2 + (|7.4 − 8.1|)2 =

√9.9 = 3.1(Công thức 3.3)

Tương tự, tính khoảng cách cho các sinh viên còn lại, ta được số liệu

như Bảng 3.4.

Bảng 3.3: Bảng kết quả khoảng cách đến tâm cụm

35

C2

C1

C3

2.0

0.0

3.1

1

1.9

1.0

3.1

2

1.6

2.7

4.7

3

3.3

2.1

1.4

4

1.8

1.3

2.8

5

1.1

2.1

3.7

6

…….

…..

……

…….

2.7

1.6

2.4

120

1.4

0.9

3.8

121

1.9

0.6

3.2

122

1.9

1.1

2.7

123

124

2.9

1.4

1.7 - Tìm giá trị gần nhất phân loại gom cụm ta được kết quả như Bảng 3.5.

Bảng 3.4: Bảng kết quả phân cụm

C2

C1

C3

Min

2.0

0.0

3.1

1

1.0

1.9

1.0

3.1

2

1.0

1.6

2.7

4.7

3

2.0

3.3

2.1

1.4

4

3.0

1.8

1.3

2.8

5

1.0

1.1

2.1

3.7

6

2.0

1.6

0.7

3.3

7

1.0

1.4

2.0

4.2

8

2.0

1.7

1.5

2.8

9

1.0

1.9

0.1

3.2

10

1.0

2.1

0.9

2.8

11

1.0

1.2

2.4

4.6

12

2.0

2.6

1.0

2.2

13

1.0

2.0

1.7

2.8

14

1.0

2.4

1.0

2.3

15

1.0

2.4

0.7

2.8

16

1.0

1.6

2.4

4.4

17

2.0

2.2

0.6

2.8

18

1.0

2.1

1.0

2.5

19

1.0

0.5

1.8

4.0

20

2.0

……

….

……

….

…..

2.1

0.7

2.7

101

1.0

36

2.7

1.7

102

1.9

1.0

1.9

1.6

103

2.6

1.0

1.9

1.1

104

2.6

1.0

2.5

2.4

105

4.6

1.0

2.3

1.2

106

2.2

1.0

1.2

1.0

107

3.6

1.0

1.8

0.5

108

3.1

1.0

4.4

3.1

109

0.0

3.0

1.7

0.8

110

3.6

1.0

3.2

2.2

111

1.2

3.0

1.8

1.5

112

2.7

1.0

2.3

1.2

113

2.3

1.0

2.1

0.5

114

3.1

1.0

2.3

1.5

115

2.5

1.0

2.7

1.6

116

2.4

1.0

3.3

2.2

117

1.2

3.0

1.1

1.1

118

3.7

1.0

1.8

0.5

119

3.1

1.0

2.7

1.6

120

2.4

1.0

1.4

0.9

121

3.8

1.0

1.9

0.6

122

3.2

1.0

1.9

1.1

123

2.7

1.0

124

1.7

2.9

1.4

1.0 Bước 2.2: Tính lại tâm cụm, ta có bảng kết quả như Bảng 3.6.

Bảng 3.5: Bảng tính kết quả tâm cụm

Y1

Y2

Y3

Ycn

Ytn

1

7.1

6.8

7.6

7.5

7.3

2

6.7

6.4

7.4

6.4

6.7

7.6

8.7

8.4

7.9

3

7.8 Tăng k = 2, ta quay lại bước 2.

Bước 3.1: Tính khoảng cách đến các điểm đến tâm cụm mới

Tính khoảng cách sinh viên thứ 1 đến tâm cụm C1 mới:

√(|7.2 − 7.1|)2 + (|6.3 − 6.8|)2 + (|7.0 − 7.6|)2 + (|7.8 − 7.5|)2 + (|7.4 − 7.3|)2 = √0.64 = 0.8

(Công thức 3.4)

37

Tính khoảng cách sinh viên thứ nhất đến tâm cụm C2 mới:

√(|7.2 − 6.7|)2 + (|6.3 − 6.4|)2 + (|7.0 − 7.4|)2 + (|7.8 − 6.4|)2 + (|7.4 − 6.7|)2 =

√2.9 = 1.7 (Công thức 3.5)

Tính khoảng cách sinh viên thứ nhất đến tâm cụm C3 mới:

√(|7.2 − 7.8|)2 + (|6.3 − 7.6|)2 + (|7.0 − 8.7|)2 + (|7.8 − 8.4|)2 + (|7.4 − 7.9|)2 =

√5.4 = 2.3 (Công thức 3.6)

Tương tự, tính khoảng cách các điểm sinh viên đến tâm cụm C1, C2,

C3 còn lại, ta được số liệu như Bảng 3.7.

Bảng 3.6: Kết quả khoảng cách sinh viên đến tâm cụm

C1 mới

C2 mới

C3 mới

0.8

1

1.7

2.3

0.8

2

1.3

2.3

2.4

3

1.3

3.9

1.5

4

2.7

0.7

0.6

5

1.2

1.9

1.6

6

1.0

2.9

0.7

7

1.3

2.4

1.8

8

1.0

3.4

0.8

9

1.2

2.0

0.8

10

1.6

2.4

0.8

115

1.7

1.7

1.2

116

2.0

1.6

1.7

117

2.8

0.5

1.1

118

0.9

2.8

0.6

119

1.5

2.2

1.2

120

2.0

1.6

1.1

121

1.1

2.9

0.9

122

1.7

2.3

0.4

123

1.3

1.8

2.0

124

0.7

1.1 - Phân loại cụm ta được kết quả như Bảng 3.8.

Bảng 3.7: Bảng kết quả phân cụm mới

38

C1 mới

C2 mới

C3 mới

Min

0.8

1.7

2.3

1.0

1

0.8

1.3

2.3

1.0

2

2.4

1.3

3.9

2.0

3

1.5

2.7

0.7

3.0

4

0.6

1.2

1.9

1.0

5

1.6

1.0

2.9

2.0

6

0.7

1.3

2.4

1.0

7

1.8

1.0

3.4

2.0

8

……..

………

……..

……..

……

1.2

2.0

1.6

1.0

120

1.1

1.1

2.9

1.0

121

0.9

1.7

2.3

1.0

122

0.4

1.3

1.8

1.0

123

0.7

1.1

2.0

1.0

124

Bước 3.2: Tính lại tâm cụm ta có bảng kết quả như Bảng 3.9.

Bảng 3.8: Bảng dữ liệu tính lại tâm cụm

Y1

Y2

Y3

Ycn

Ytn

1

7.1

6.8

7.6

7.5

7.3

2

7.2

6.3

7.6

7.6

7.3

3

7.1

7.6

7.7

7.2

7.0

Tăng k lên với k =3, ta quay lại bước 2.

Bước 2.3: Tính khoảng cách đến các điểm đến tâm cụm mới

Tính khoảng cách sinh viên thứ 1 đến tâm cụm C1 mới 2:

√(|7.2 − 7.1|)2 + (|6.3 − 6.8|)2 + (|7.0 − 7.6|)2 + (|7.8 − 7.5|)2 + (|7.4 − 7.3|)2 = √0.7 = 0.8

(Công thức 3.7)

Tính khoảng cách sinh viên thứ nhất đến tâm cụm C2 mới 2:

√(|7.2 − 7.2|)2 + (|6.3 − 6.3|)2 + (|7.0 − 7.6|)2 + (|7.8 − 7.6|)2 + (|7.4 − 7.3|)2 = √0.4 = 0.6

(Công thức 3.8)

Tính khoảng cách sinh viên thứ nhất đến tâm cụm C3 mới 2:

√(|7.2 − 7.1|)2 + (|6.3 − 7.6|)2 + (|7.0 − 7.7|)2 + (|7.8 − 7.2|)2 + (|7.4 − 7.0|)2 = √2.7 = 1.6

(Công thức 3.9)

39

Ta có khoảng cách các điểm sinh viên đến tâm cụm C1, C2, C3 như Bảng 3.10.

Bảng 3.9: Bảng kết quả số liệu đến tâm cụm mới

C1 mới 2

C2 mới 2

C3 mới 2

0.8

1

0.6

1.6

0.8

2

0.5

1.5

2.5

3

2.4

2.6

1.5

4

1.7

1.7

0.6

5

0.9

0.7

……

……

……

……

1.2

116

1.1

1.7

1.7

117

1.9

1.7

1.1

118

1.1

1.5

0.6

119

0.7

1.2

1.2

120

1.1

1.7

1.1

121

1.1

1.6

0.9

122

0.9

1.4

0.4

123

0.6

0.9

0.7

124

1.0

0.7

- Phân loại cụm ta được kết quả như Bảng 3.11

Bảng 3.10: Bảng kết quả phân cụm mới

C1 mới 2

C2 mới 2

C3 mới 2

Min

1

0.8

0.6

1.6

3

2

0.8

0.5

1.5

3

3

2.5

2.4

2.6

3

4

1.5

1.7

1.7

3

5

0.6

0.9

0.7

3

6

1.6

1.7

1.3

3

7

0.7

0.8

1.2

3

8

1.9

1.7

2.1

3

9

0.8

1.2

0.5

3

10

0.8

0.6

1.6

3

…..

…..

……

…..

………

113

0.5

0.9

0.8

3

114

0.9

0.9

1.5

3

115

0.8

1.2

0.9

3

40

1.1

1.2

116

1.7

3

1.9

1.7

117

1.7

3

1.1

1.1

118

1.5

3

0.7

0.6

119

1.2

3

1.1

1.2

120

1.7

3

1.1

1.1

121

1.6

3

0.9

0.9

122

1.4

3

0.6

0.4

123

0.9

1

1.0

0.7

124

0.7

3

3.3.2 Xây dựng ứng dụng phân cụm K -Means bằng Python - Xây dựng dữ liệu bằng file Excel để thực hiện thuật toán K -Means theo Bảng dữ liệu 3.12 gồm có Y1 điểm SV năm 1, Y2 điểm SV năm 2, Y3 điểm SV năm 3, Ycn điểm SV chuyên ngành, Ytn điểm SV tốt nghiệp gồm 124 SV.

Bảng 3.11: Bảng dữ liệu SV phân cụm

Y1

Y2

Y3

Ycn

Ytn

7.2

6.3

7.0

7.8

7.4

6.9

6.1

7.8

7.5

7.1

5.9

5.8

8.0

5.8

6.7

7.2

7.4

8.7

8.2

7.8

6.8

7.0

7.9

7.3

7.1

7.5

6.9

7.7

6.2

6.5

6.8

6.7

7.0

7.5

7.2

6.2

5.8

7.7

6.7

6.4

6.9

7.2

7.9

7.1

7.0

7.2

6.3

7.0

7.7

7.4

7.6

7.0

7.0

7.6

7.6

6.2

5.8

7.7

6.1

6.4

……

……

……

……

……

6.9

6.4

8.6

7.9

7.4

6.5

6.3

6.9

7.2

7.2

7.3

6.7

6.8

7.5

7.6

7.1

6.7

7.9

7.4

7.2

6.8

7.0

7.9

7.1

7.1

- Xây dựng giao diện chương trình nhận File dữ liệu Excel theo Hình

3.27.

41

Hình 3.27: Nhận file dữ liệu Excel

- Phân loại điểm SV với điểm Y1 năm 1, Y2 điểm năm 2, Y3 điểm năm

3 với K cụm, K=3 như Hình 3.28.

Hình 3.28: Phân cụm với K =3

- Phân loại điểm SV với điểm Y1 năm 1, Y2 điểm năm 2, Y3 điểm năm

3 với K cụm, K=5 như Hình 3.29.

42

Hình 3.29: Phâm cụm với K = 5

- Phân loại điểm SV với điểm Y1 năm 1, Y2 điểm năm 2, Y3 điểm năm

3 với K cụm, K=10 như Hình 3.30.

Hình 3.30: Phân cụm K =10

- Kết quả phân cụm theo K =3, K= 5, K =10 theo điểm của Sinh viên gồm 3 biến điểm năm 1 là Y1, điểm năm 2 là Y2, điểm năm 3 là Y3 như Hình 3.31.

43

Hình 3.31: Kết quả phân cụm theo K

-Xây dựng chương trình phân cụm dựa trên điểm thực tập chuyên ngành và điểm tốt nghiệp sinh viên với biến Ycn điểm chuyên ngành, Ytn điểm tốt nghiệp.

Ta thử phân cụm với K =3, ta có kết quả như Hình 3.32.

Hình 3.32: Phân cụm với K = 3

44

-Xây dựng chương trình phân cụm dựa trên điểm thực tập chuyên

ngành và điểm tốt nghiệp sinh viên với biến Ycn điểm chuyên ngành, Ytn điểm tốt nghiệp.

Ta thử phân cụm với K =5, ta có kết quả như Hình 3.33.

Hình 3.33: Phâm cụm điểm Ycn và Ytn SV với K = 5

45

- Phân cụm điểm chuyên ngành Ycn và điểm tốt nghiệp Ytnvới K = 10,

như Hình 3.34.

Hình 3.34: Kết quả phân cụm điểm Ycn, Ytn của SV với K = 10

46

CHƯƠNG 4: XÂY DỰNG TẬP CÂU HỎI PHÂN TÍCH

4.1 Xây dựng tập dữ liệu câu hỏi phân tích và trả lời

- Nội dung phân tích và câu hỏi là vấn đề quan trọng trong phương pháp

trực quan với trực quan 2 chiều.

- Bảng phân tích câu hỏi bao gồm giả thiết và kết luận như Bảng 4.1

Bảng 4.1: Bảng phân tích câu hỏi

Câu hỏi

Giả thiết

Kết luận

Kết quả học tập của SV ảnh hưởng đến việc làm?

Điểm SV học tập trong trong quá trình học tại trường cao đẳng.

Điểm SV năm 1, năm 2, năm 3, chuyên ngành, điểm tốt nghiệp ảnh hướng đến việc làm như thế nào?

- Quan sát biểu đồ trực quan điểm năm 1 là Y1, điểm năm 2 là Y2, điểm năm 3 là Y3, điểm chuyên ngành Ycn, điểm tốt nghiệp Ytn của Sinh viênnhư Hình 4.1.

Hình 4.1: Biểu đồ điểm toàn khóa học SV

47

- Dựa vào biểu đồ điểm chuyên ngành và điểm tốt nghiệp SV càng cao

thì tỷ lệ việc làm của SV cao hơn như Hình 4.2.

Hình 4.2: Điểm chuyên ngành và tốt nghiệp SV

- Quan sát biểu đồ 3 chiều biểu diễn điểm SV năm 1, 2, 3 có điểm cao

thì điểm chuyên ngành và điểm tốt nghiệp cao thể hiện Hình 4.3.

48

Hình 4.3: Biểu đồ 3D điểm SV Y1, Y2, Y3, Ycn, Ytn

4.2 Xây dựng tập câu hỏi và trả lời theo K – Means

- Phân loại điểm SV năm 1, năm 2, năm 3 với K = 10, ta thấy cụm điểm cao ít, nhưng có điểm chuyên ngành và điểm tốt nghiệp cao như Hình 4.4.

Hình 4.4: Điểm năm 1, 2, 3 với K =10

49

- Dựa vào biểu đồ phân cụm điểm chuyên ngành Ycn và điểm tốt nghiệp Ytn của SV có điểm cao thì tỷ lệ việc làm cao theo Hình 4.5 với cụm ngẫu nhiên.

Hình 4.5: Điểm chuyên ngành Ycn, Ytn của SV với K = 10

50

CHƯƠNG 5: KẾT LUẬN

- Tác giả đã tiếp cận dữ liệu điểm của SV năm 1, 2, 3, điểm chuyên ngành, điểm tốt nghiệp với điểm tốt nghiệp của 3 khoa. Khảo sát thêm SV có việc làm và không có việc làm.

- Tiếp cận theo phương pháp phân tích và biểu diễn bằng phương pháp biểu đồ không gian 2 chiều và 3 chiều, phương pháp phân cụm dữ liệu với thuật toán K -Means.

- Xây dựng các biểu đồ trực quan và mô tả các biến rõ ràng, ứng dụng các phương pháp trực quan trên biểu đồ không gian và thời gian với bểu đồ cột, đường và phương pháp phân cụm điểm ngẫu nhiên.

- Từ các biểu đồ được phân tích dữ liệu sinh viên tốt nghiệp rút ra được các thông tin hữu ích hỗ trợ đưa ra quyết định các chính sách nâng cao chất lượng đào tạo của Trường.

51

TÀI LIỆU THAM KHẢO [1] Phuoc Vinh Tran, Truong Xuan Le, “Approaching human vision perceptionto designing visual graph in data visualization”, March 2020.

[2]

Pham Dinh Khanh

(2019), Visualization

trong

https://phamdinhkhanh.github.io/2019/09/16/VisualizationPython.html,

python, truy cập ngày:

20/01/2020

toán K-Means và ví dụ,

(2018), Thuật [3] Nguyễn Văn Hiếu https://nguyenvanhieu.vn/thuat-toan-phan-cum-k-means/, truy cập ngày 05/02/2020

K-nearest

neighbors,

(2017), [4]Anonymous https://machinelearningcoban.com/2017/01/08/knn/, access Mar 5,2020

[5] Hong Thi Nguyen, Lieu Thi Le, Cam Ngoc Thi Huynh, Thuan My Thi Pham, Anh Van Thi Tran, Dang Van Pham, Phuoc Vinh Tran, “Integrating Retinal Variables into Graph Visualizing Multivariate Data to Increase Visual Features”, November 2019.

[6] Hong Thi Nguyen, Thuan My Thi Pham, Tuyet Anh Thi Nguyen, Anh Van Thi Tran, Phuoc Vinh Tran, and Dang Van Pham, “Two – Stage Approach to Classifying Multidimensional Cubes for Visualization of Multivariate Data, November 2018.

[7] Phuoc Vinh Tran, Hong Thi Nguyen, “Multidimensional Cube for Representing Flight Data in Visualization – based System for Tracking Flyer”, October 2016.

[8] Arif Perdana, Alastair Robb & Fiona Rohde, “Does Visualization Matter? The Role of Interactive Data Visualization to Make Sense of Information”, Australasian Journal of Information Systems 2018, Voll 22, Research Article.

[9] Nguyễn Văn Lễ, Mạnh Thiên Lý, Nguyễn Thị Định, Nguyễn Thị Thanh Thủy (2018), Cải tiến thuật toán K -means và ứng dụng hỗ trợ sinh viên chọn chuyên ngành theo học chế tín chỉ, Tạp chí Khoa học công nghệ và Thực phẩm, 15(1), tr 152-160.

[10]Anonymous (2018), Matplotlib ,https://matplotlib.org/, access: Jun 18,2020

[11] Nguyễn Văn Hiếu (2018), Thư viện pandas trong python,Thư viện Pandas trong Python (nguyenvanhieu.vn), truy cập ngày: 15/09/2020

52

[12] Nguyen Van Hoang (2019), Giới thiệu về Numpy, Giới thiệu về Numpy (một thư viện chủ yếu phục vụ cho khoa học máy tính của Python) (viblo.asia), truy cập ngày: 28/09/2020

[13] Vô danh (2020), Thư viện scikit learn trong python là gì?, Thư Viện Scikit- learn Trong Python Là Gì? (codelearn.io), truy cập ngày: 12/10/2020

[14] Phuoc Tran Vinh, Hong Nguyen Thi, “Visualization Cube for Tracking Moving Object”, May 2011.

[15] Nguyễn Quyết, Lê Thị Kim Thoa, “Ứng dụng mô hình hồi quy logit thứ bậc phân tích kết quả môn học tiếng Anh của sinh viên trường đại học ngaoì công lập của thành phố Hồ Chí Minh”, Tạp chí Giáo dục, 44 (kì 2 – 12/2018), tr 48-54

[16] Hong Nguyen Thi, Anh Van Thi Tran, Tuyet Anh Nguyen Thi, Luc Tan Vo, Phuoc Tran Vinh, “Multivariate Cube for Representing Multivariable Data in Visual Analytics”, Nov 2016

[17] Vô danh, Trực quan hóa dữ liệu bằng Matplotib & Python cho khát vọng khoa học dữ liệu, https://ichi.pro/vi/truc-quan-hoa-du-lieu-bang-matplotib- python-cho-khat-vong-khoa-hoc-du-lieu-235515044314489, truy cập ngày: 26/01/2021

(2017),

danh

K-means

truy

Clustering, cập ngày:

[18] https://machinelearningcoban.com/2017/01/01/kmeans/, 05/02/2021

53

PHỤ LỤC CODE

df['STT']

df2['STT']

df3['STT']

1 import numpy as np 2 import pandas as pd 3 from pandas import ExcelFile 4 import matplotlib.pyplot as plt 5 from mpl_toolkits.mplot3d import Axes3D 6 import folium 7 8 9 df = pd.read_excel('D:\CAOHOC\Yen\CODE\DULIEUDIEMSV.xls') 10 df1 = pd.read_excel('D:\CAOHOC\Yen\CODE\DULIEUDIEMSV1.xls') 11 df2 = pd.read_excel('D:\CAOHOC\Yen\CODE\DULIEUDIEMSV2.xls') 12 df3 = pd.read_excel('D:\CAOHOC\Yen\CODE\DULIEUDIEMSV3.xls') 13 df4 = pd.read_excel('D:\CAOHOC\Yen\CODE\DIEMSV0J.xls') 14 df5 = pd.read_excel('D:\CAOHOC\Yen\CODE\DIEMSV1J.xls') 15 print(df) 16 S0 = 17 d01 = df['Y1'] 18 d02 = df['Y2'] 19 d03 = df['Y3'] 20 d04 = df['Ycn'] 21 d05 = df['Ytn'] 22 d06=0 23 24 25 S1 = df1['STT'] 26 a1 = df1['Y1'] 27 a2 = df1['Y2'] 28 a3 = df1['Y3'] 29 a4 = df1['Ycn'] 30 a5 = df1['Ytn'] 31 32 S2 = 33 b1 = df2['Y1'] 34 b2 = df2['Y2'] 35 b3 = df2['Y3'] 36 b4 = df2['Ycn'] 37 b5 = df2['Ytn'] 38 39 40 S3 = 41 c1 = df3['Y1'] 42 c2 = df3['Y2'] 43 c3 = df3['Y3'] 44 c4 = df3['Ycn'] 45 c5 = df3['Ytn'] 46 47 s4 = df4['STT'] 48 e4= df4['Ycn'] 49 e5 = df4['Ytn'] 50 51 s5 = df5['STT'] 52 f4 = df5['Ycn'] 53 f5 = df5['Ytn'] 54 print(df4) 55 print(df5) 56 # Bieu do cot tong hop 57 #X = np.arange(4) 58 fig = plt.figure() 59 ax0 = fig.add_axes([0,0,1,1]) 60 ax0.bar(S0 + 0.00, d01, color = 'g', width = 0.25) 61 ax0.bar(S0 + 0.25, d02, color = 'r', width = 0.25) 62 ax0.bar(S0 + 0.50, d03, color = 'b', width = 0.25) 63 ax0.bar(S0 + 0.75, d04, color = 'y', width = 0.25) 64 ax0.bar(S0 + 1, d05, color = 'violet', width = 0.25) 65 ax0.bar(S0 + 1.25, d06, color = 'w', width = 0.25) 66 plt.ylabel('DIEM') 67 plt.xlabel('SINHVIEN') 68 plt.legend() 69 plt.show() 70 71 #plt.bar(S0 + 0.00, d01, color = 'g', width = 0.5,label='Điểm năm 1') 72 #plt.bar(S0 + 0.25, d02, color = 'r', width = 0.25)

73 #plt.bar(S0 + 0.5, d03, color = 'b', width = 0.25) 74 #plt.bar(S0 + 0.75, d04, color = 'y', width = 0.25) 75 #plt.bar(S0 + 1, d05, color = 'violet', width = 0.25) 76 #plt.bar(S0 + 1.25, d06, color = 'w', width = 0.25) 77 #plt.ylabel('Điểm của sinh viên từ 0 đến 10') 78 #plt.xlabel('Số lượng sinh viên của khóa 2016') 79 #plt.legend() 80 #plt.show() 81 82 # Bieu do khoa co khí dong luc 83 fig = plt.figure() 84 ax1 = fig.add_axes([0,0,1,1]) 85 ax1.bar(S1 + 0.00, a1, color = 'g', width = 0.25) 86 ax1.bar(S1 + 0.25, a2, color = 'r', width = 0.25) 87 ax1.bar(S1 + 0.5, a3, color = 'b', width = 0.25) 88 ax1.bar(S1 + 0.75, a4, color = 'y', width = 0.25) 89 ax1.bar(S1 + 1, a5, color = 'violet', width = 0.25) 90 plt.ylabel('DIEM') 91 plt.xlabel('SINHVIEN') 92 plt.show() 93 ### Khoa co khi ch tao 94 fig = plt.figure() 95 ax2 = fig.add_axes([0,0,1,1]) 96 ax2.bar(S2 + 0.00, b1, color = 'g', width = 0.25) 97 ax2.bar(S2 + 0.25, b2, color = 'r', width = 0.25) 98 ax2.bar(S2 + 0.50, b3, color = 'b', width = 0.25) 99 ax2.bar(S2 + 0.75, b4, color = 'y', width = 0.25) 100 ax2.bar(S2 + 1, b5, color = 'violet', width = 0.25) 101 plt.ylabel('DIEM') 102 plt.xlabel('SINHVIEN') 103 plt.legend() 104 plt.show() 105 106 ### Khoa dien 107 fig = plt.figure() 108 ax3 = fig.add_axes([0,0,1,1]) 109 ax3.bar(S3 + 0.00, c1, color = 'g', width = 0.25) 110 ax3.bar(S3 + 0.25, c2, color = 'r', width = 0.25) 111 ax3.bar(S3 + 0.5, c3, color = 'b', width = 0.25) 112 ax3.bar(S3 + 0.75, c4, color = 'y', width = 0.25) 113 ax3.bar(S3 + 1, c5, color = 'violet', width = 0.25) 114 plt.ylabel('DIEM') 115 plt.xlabel('SINHVIEN') 116 plt.show() 117 118 # Vẽ đồ thị theo dạng điểm mutiline 119 # Dạng 01 co khi dong luc 120 plt.plot(S1,a1,color = 'g', ls = '--',label='Y1 điểm năm 1') 121 plt.plot(S1,a2,color = 'r', ls = '--',label='Y2 điểm năm 2') 122 plt.plot(S1,a3,color = 'b', ls = '--',label='Y3 điểm năm 3') 123 plt.plot(S1,a4,color = 'y', ls = '--',label='Ycn Điểm chuyên ngành') 124 plt.plot(S1,a5,color = 'violet', ls = '--',label='Ytn Điểm tốt nghiệp Sinh viên') 125 plt.ylabel('Điểm của sinh viên từ 0 đến 10') 126 plt.xlabel('Số lượng sinh viên Khoa Cơ Khí Động Lực năm 2016, tốt nghiệp 2019') 127 plt.legend() 128 plt.show() 129 # Dạng 02 co khi che tao 130 plt.plot(S2,b1,color = 'g', ls = '--',label='Y1 điểm năm 1') 131 plt.plot(S2,b2,color = 'r', ls = '--',label='Y2 điểm năm 2') 132 plt.plot(S2,b3,color = 'b', ls = '--',label='Y3 điểm năm 3') 133 plt.plot(S2,b4,color = 'y', ls = '--',label='Ycn Điểm chuyên ngành') 134 plt.plot(S2,b5,color = 'violet', ls = '--',label='Ytn Điểm tốt nghiệp Sinh viên') 135 plt.ylabel('Điểm của sinh viên từ 0 đến 10') 136 plt.xlabel('Số lượng sinh viên của Khoa Cơ Khí Chế Tạo năm 2016, tốt nghiệp 2019') 137 plt.legend() 138 plt.show() 139 # Dạng 03 Khoa Điện 140 plt.plot(S3,c1,color = 'g', ls = '--',label='Y1 điểm năm 1') 141 plt.plot(S3,c2,color = 'r', ls = '--',label='Y2 điểm năm 2') 142 plt.plot(S3,c3,color = 'b', ls = '--',label='Y3 điểm năm 3') 143 plt.plot(S3,c4,color = 'y', ls = '--',label='Ycn Điểm chuyên ngành') 144 plt.plot(S3,c5,color = 'violet', ls = '--',label='Ytn Điểm tốt nghiệp Sinh viên')

145 plt.ylabel('Điểm của sinh viên từ 0 đến 10') 146 plt.xlabel('Số lượng sinh viên của Khoa Điện năm 2016, tốt nghiệp 2019') 147 plt.legend() 148 plt.show() 149 # Dang 0 TH Toan Sinh vien 150 plt.plot(S0,d01,color = 'g', ls = '--',label='Y1 điểm năm 1') 151 plt.plot(S0,d02,color = 'r', ls = '--',label='Y2 điểm năm 2') 152 plt.plot(S0,d03,color = 'b', ls = '--',label='Y3 điểm năm 3') 153 plt.plot(S0,d04,color = 'y', ls = '--',label='Ycn Điểm chuyên ngành') 154 plt.plot(S0,d05,color = 'violet', ls = '--',label='Ytn Điểm tốt nghiệp Sinh viên') 155 plt.ylabel('Điểm của sinh viên từ 0 đến 10') 156 plt.xlabel('Số lượng sinh viên của trường năm 2016, tốt nghiệp 2019') 157 plt.legend() 158 plt.show() 159 160 # Điểm Khoa cơ khí động lực 161 fig, axes = plt.subplots(1, 5, sharey=False, sharex=False) 162 fig.set_figwidth(16) 163 fig.set_figheight(8) 164 axes[0].plot(a1.index, a1, label='Điểm năm 1') 165 axes[0].set_xlabel(" Sinh viên Cơ khí động lực khóa 2016 (a)") 166 axes[0].set_ylabel("Điểm 0 đến 10 ") 167 axes[0].legend(loc='best') 168 169 axes[1].plot(a2.index, a2, label='Điểm năm 2') 170 axes[1].set_xlabel(" Sinh viên Cơ khí động lực khóa 2016 (b)") 171 axes[1].set_ylabel("Điểm 0 đến 10 ") 172 axes[1].legend(loc='best') 173 174 axes[2].plot(a3.index, a3, label='Điểm năm 3') 175 axes[2].set_xlabel(" Sinh viên Cơ khí động lực khóa 2016 (c)") 176 axes[2].set_ylabel("Điểm 0 đến 10 ") 177 axes[2].legend(loc='best') 178 179 axes[3].plot(a4.index, a4, label='Điểm thực tập') 180 axes[3].set_xlabel(" Sinh viên Cơ khí động lực khóa 2016 (d)") 181 axes[3].set_ylabel("Điểm 0 đến 10 ") 182 axes[3].legend(loc='best') 183 184 axes[4].plot(a5.index, a5, label='Điểm tốt nghiệp') 185 axes[4].set_xlabel(" Sinh viên Cơ khí động lực khóa 2016 (e)") 186 axes[4].set_ylabel("Điểm 0 đến 10 ") 187 axes[4].legend(loc='best') 188 189 plt.tight_layout() 190 plt.show() 191 192 # Điểm khoa cơ khí chế tạo 193 fig, axes = plt.subplots(1, 5, sharey=False, sharex=False) 194 fig.set_figwidth(16) 195 fig.set_figheight(8) 196 axes[0].plot(b1.index, b1, label='Điểm năm 1') 197 axes[0].set_xlabel("Sinh viên Khoa Cơ Khí Chế Tạo khóa 2016(a)") 198 axes[0].set_ylabel("Điểm 0 đến 10 ") 199 axes[0].legend(loc='best') 200 201 axes[1].plot(b2.index, b2, label='Điểm năm 2') 202 axes[1].set_xlabel("Sinh viên Khoa Cơ Khí Chế Tạo khóa 2016(b)") 203 axes[1].set_ylabel("Điểm 0 đến 10 ") 204 axes[1].legend(loc='best') 205 206 axes[2].plot(b3.index, b3, label='Điểm năm 3') 207 axes[2].set_xlabel("Sinh viên Khoa Cơ Khí Chế Tạo khóa 2016(c)") 208 axes[2].set_ylabel("Điểm 0 đến 10 ") 209 axes[2].legend(loc='best') 210 211 axes[3].plot(b3.index, b4, label='Điểm thực tập') 212 axes[3].set_xlabel("Sinh viên Khoa Cơ Khí Chế Tạo khóa 2016(d)") 213 axes[3].set_ylabel("Điểm 0 đến 10 ") 214 axes[3].legend(loc='best') 215 216 axes[4].plot(b5.index, b5, label='Điểm tốt nghiệp')

217 axes[4].set_xlabel("Sinh viên Khoa Cơ Khí Chế Tạo khóa 2016(e)") 218 axes[4].set_ylabel("Điểm 0 đến 10 ") 219 axes[4].legend(loc='best') 220 221 plt.tight_layout() 222 plt.show() 223 224 # Điểm Sinh viên Khoa Điện 225 fig, axes = plt.subplots(1, 5, sharey=False, sharex=False) 226 fig.set_figwidth(16) 227 fig.set_figheight(8) 228 axes[0].plot(c1.index, c1, label='Điểm năm 1') 229 axes[0].set_xlabel(" Sinh viên Khoa Điện khóa 2016 (a)") 230 axes[0].set_ylabel("Điểm 0 đến 10 ") 231 axes[0].legend(loc='best') 232 233 axes[1].plot(c2.index, c2, label='Điểm năm 2') 234 axes[1].set_xlabel(" Sinh viên Khoa Điện khóa 2016 (b)") 235 axes[1].set_ylabel("Điểm 0 đến 10 ") 236 axes[1].legend(loc='best') 237 238 axes[2].plot(c3.index, c3, label='Điểm năm 3') 239 axes[2].set_xlabel(" Sinh viên Khoa Điện khóa 2016 (c)") 240 axes[2].set_ylabel("Điểm 0 đến 10 ") 241 axes[2].legend(loc='best') 242 243 axes[3].plot(c4.index, c4, label='Điểm thực tập') 244 axes[3].set_xlabel(" Sinh viên Khoa Điện khóa 2016 (d)") 245 axes[3].set_ylabel("Điểm 0 đến 10 ") 246 axes[3].legend(loc='best') 247 248 axes[4].plot(c5.index, c5, label='Điểm tốt nghiệp') 249 axes[4].set_xlabel(" Sinh viên Khoa Điện khóa 2016 (e)") 250 axes[4].set_ylabel("Điểm 0 đến 10 ") 251 axes[4].legend(loc='best') 252 253 plt.tight_layout() 254 plt.show() 255 256 # điểm 3 năm của sinh viên 257 fig, axes = plt.subplots(1, 5, sharey=False, sharex=False) 258 fig.set_figwidth(16) 259 fig.set_figheight(8) 260 axes[0].plot(d01.index, d01, label='Điểm năm 1') 261 axes[0].set_xlabel(" Sinh viên khóa 2016 (a)") 262 axes[0].set_ylabel("Điểm 0 đến 10 ") 263 axes[0].legend(loc='best') 264 265 axes[1].plot(d02.index, d02, label='Điểm năm 2') 266 axes[1].set_xlabel(" Sinh viên khóa 2016 (b)") 267 axes[1].set_ylabel("Điểm 0 đến 10 ") 268 axes[1].legend(loc='best') 269 270 axes[2].plot(d03.index, d03, label='Điểm năm 3') 271 axes[2].set_xlabel(" Sinh viên khóa 2016 (c)") 272 axes[2].set_ylabel("Điểm 0 đến 10 ") 273 axes[2].legend(loc='best') 274 275 axes[3].plot(d03.index, d04, label='Điểm thực tập') 276 axes[3].set_xlabel(" Sinh viên khóa 2016 (d)") 277 axes[3].set_ylabel("Điểm 0 đến 10 ") 278 axes[3].legend(loc='best') 279 280 axes[4].plot(d05.index, d05, label='Điểm tốt nghiệp') 281 axes[4].set_xlabel(" Sinh viên khóa 2016 (e)") 282 axes[4].set_ylabel("Điểm 0 đến 10 ") 283 axes[4].legend(loc='best') 284 285 plt.tight_layout() 286 plt.show() 287 288

289 # điểm 3 năm của sinh viên plot Khoa cơ khí động lực 290 fig, axes = plt.subplots(1, 5, sharey=False, sharex=False) 291 fig.set_figwidth(16) 292 fig.set_figheight(8) 293 axes[0].plot(a1.index, a1,color = 'r', ls = '--', marker = 's', lw = 2,label='Điểm năm 1')

294 axes[0].set_xlabel("Sinh viên Khoa Cơ Khí Động lực khóa 2016(a)") 295 axes[0].set_ylabel("Điểm 0 đến 10 ") 296 axes[0].legend(loc='best') 297 298 axes[1].plot(a2.index, a2, color = 'y', ls = '--', marker = 's', lw = 2,label='Điểm năm 2')

299 axes[1].set_xlabel("Sinh viên Cơ khí động lực khóa 2016(b)") 300 axes[1].set_ylabel("Điểm 0 đến 10 ") 301 axes[1].legend(loc='best') 302 303 axes[2].plot(a3.index, a3, color = 'b', ls = '--', marker = 's', lw = 2,label='Điểm năm 3')

304 axes[2].set_xlabel("Sinh viên Cơ khí động lực khóa 2016(c)") 305 axes[2].set_ylabel("Điểm 0 đến 10 ") 306 axes[2].legend(loc='best') 307 308 axes[3].plot(a4.index, a4, color = 'g', ls = '--', marker = 's', lw = 2,label='Điểm thực tập chuyên ngành')

309 axes[3].set_xlabel(" Sinh viên Cơ khí động lực khóa 2016 (d)") 310 axes[3].set_ylabel("Điểm 0 đến 10 ") 311 axes[3].legend(loc='best') 312 313 axes[4].plot(a5.index, a5, color = 'violet', ls = '--', marker = 's', lw = 2,label='Điểm năm tốt nghiệp')

314 axes[4].set_xlabel("Sinh viên Cơ khí động lực khóa 2016(e)") 315 axes[4].set_ylabel("Điểm 0 đến 10 ") 316 axes[4].legend(loc='best') 317 318 plt.tight_layout() 319 plt.show() 320 # điểm 3 năm của sinh viên plot Khoa Cơ khí chế tạo 321 fig, axes = plt.subplots(1, 5, sharey=False, sharex=False) 322 fig.set_figwidth(16) 323 fig.set_figheight(8) 324 axes[0].plot(b1.index, b1,color = 'r', ls = '--', marker = 's', lw = 2,label='Điểm năm 1')

325 axes[0].set_xlabel("Sinh viên Khoa Cơ Khí Chế Tạo khóa 2016(a)") 326 axes[0].set_ylabel("Điểm 0 đến 10 ") 327 axes[0].legend(loc='best') 328 329 axes[1].plot(b2.index, b2, color = 'y', ls = '--', marker = 's', lw = 2,label='Điểm năm 2')

330 axes[1].set_xlabel("Sinh viên Khoa Cơ Khí Chế Tạo khóa 2016(b)") 331 axes[1].set_ylabel("Điểm 0 đến 10 ") 332 axes[1].legend(loc='best') 333 334 axes[2].plot(b3.index, b3, color = 'b', ls = '--', marker = 's', lw = 2,label='Điểm năm 3')

335 axes[2].set_xlabel("Sinh viên Khoa Cơ Khí Chế Tạo khóa 2016(c)") 336 axes[2].set_ylabel("Điểm 0 đến 10 ") 337 axes[2].legend(loc='best') 338 339 axes[3].plot(b4.index, b4, color = 'g', ls = '--', marker = 's', lw = 2,label='Điểm thực tập chuyên ngành')

340 axes[3].set_xlabel("Sinh viên Khoa Cơ Khí Chế Tạo khóa 2016(d)") 341 axes[3].set_ylabel("Điểm 0 đến 10 ") 342 axes[3].legend(loc='best') 343 344 axes[4].plot(b5.index, b5, color = 'violet', ls = '--', marker = 's', lw = 2,label='Điểm năm tốt nghiệp')

345 axes[4].set_xlabel("Sinh viên Khoa Cơ Khí Chế Tạo khóa 2016(e)") 346 axes[4].set_ylabel("Điểm 0 đến 10 ") 347 axes[4].legend(loc='best') 348 349 plt.tight_layout() 350 plt.show()

351 352 # điểm 3 năm của sinh viên plot Khoa Điện 353 fig, axes = plt.subplots(1, 5, sharey=False, sharex=False) 354 fig.set_figwidth(16) 355 fig.set_figheight(8) 356 axes[0].plot(c1.index, c1,color = 'r', ls = '--', marker = 's', lw = 2,label='Điểm năm 1')

357 axes[0].set_xlabel(" Sinh viên Khoa Điện khóa 2016 (a)") 358 axes[0].set_ylabel("Điểm 0 đến 10 ") 359 axes[0].legend(loc='best') 360 361 axes[1].plot(c2.index, c2, color = 'y', ls = '--', marker = 's', lw = 2,label='Điểm năm 2')

362 axes[1].set_xlabel(" Sinh viên Khoa Điện khóa 2016 (b)") 363 axes[1].set_ylabel("Điểm 0 đến 10 ") 364 axes[1].legend(loc='best') 365 366 axes[2].plot(c3.index, c3, color = 'b', ls = '--', marker = 's', lw = 2,label='Điểm năm 3')

367 axes[2].set_xlabel(" Sinh viên Khoa Điện khóa 2016 (c)") 368 axes[2].set_ylabel("Điểm 0 đến 10 ") 369 axes[2].legend(loc='best') 370 371 axes[3].plot(c4.index, c4, color = 'g', ls = '--', marker = 's', lw = 2,label='Điểm thực tập chuyên ngành')

372 axes[3].set_xlabel(" Sinh viên Khoa Điện khóa 2016 (d)") 373 axes[3].set_ylabel("Điểm 0 đến 10 ") 374 axes[3].legend(loc='best') 375 376 axes[4].plot(c5.index, c5, color = 'violet', ls = '--', marker = 's', lw = 2,label='Điểm năm tốt nghiệp')

377 axes[4].set_xlabel(" Sinh viên Khoa Điện khóa 2016 (e)") 378 axes[4].set_ylabel("Điểm 0 đến 10 ") 379 axes[4].legend(loc='best') 380 381 plt.tight_layout() 382 plt.show() 383 384 # điểm 3 năm của sinh viên plot toàn khóa 385 fig, axes = plt.subplots(1, 5, sharey=False, sharex=False) 386 fig.set_figwidth(16) 387 fig.set_figheight(8) 388 axes[0].plot(d01.index, d01,color = 'r', ls = '--', marker = 's', lw = 2,label='Điểm năm 1')

389 axes[0].set_xlabel(" Sinh viên khóa 2016 (a)") 390 axes[0].set_ylabel("Điểm 0 đến 10 ") 391 axes[0].legend(loc='best') 392 393 axes[1].plot(d02.index, d02, color = 'y', ls = '--', marker = 's', lw = 2,label='Điểm năm 2')

394 axes[1].set_xlabel(" Sinh viên khóa 2016 (b)") 395 axes[1].set_ylabel("Điểm 0 đến 10 ") 396 axes[1].legend(loc='best') 397 398 axes[2].plot(d03.index, d03, color = 'b', ls = '--', marker = 's', lw = 2,label='Điểm năm 3')

399 axes[2].set_xlabel(" Sinh viên khóa 2016 (c)") 400 axes[2].set_ylabel("Điểm 0 đến 10 ") 401 axes[2].legend(loc='best') 402 403 axes[3].plot(d04.index, d04, color = 'g', ls = '--', marker = 's', lw = 2,label='Điểm thực tập chuyên ngành')

404 axes[3].set_xlabel(" Sinh viên khóa 2016 (d)") 405 axes[3].set_ylabel("Điểm 0 đến 10 ") 406 axes[3].legend(loc='best') 407 408 axes[4].plot(d05.index, d05, color = 'violet', ls = '--', marker = 's', lw = 2,label='Điểm năm tốt nghiệp')

409 axes[4].set_xlabel(" Sinh viên khóa 2016 (e)") 410 axes[4].set_ylabel("Điểm 0 đến 10 ") 411 axes[4].legend(loc='best') 412

413 plt.tight_layout() 414 plt.show() 415 416 ## So Sánh điểm chuyên ngành và Trung bình tốt nghiệp 417 fig, b = plt.subplots(1, 3, sharey=False, sharex=False) 418 fig.set_figwidth(16) 419 fig.set_figheight(8) 420 b[0].plot(a4.index,a4, color = 'b', ls = '--', marker = 's', lw = 2,label='Ycn') 421 b[0].set_xlabel("SV Cơ khí động lực khóa 2016 (a)") 422 b[0].plot(a5.index,a5, color = 'c', ls = '--', marker = 's', lw = 2,label='Ytn') 423 b[0].set_ylabel("Điểm 0 đến 10 ") 424 b[0].legend(loc='best') 425 426 427 b[1].plot(a4.index,a4, color = 'y', ls = '--', marker = 's', lw = 2,label='Ycn') 428 b[1].set_xlabel("SV Cơ khí chế tạo khóa 2016 (b)") 429 b[1].plot(a5.index,a5, color = 'g', ls = '--', marker = 's', lw = 2,label='Ytn') 430 b[1].set_ylabel("Điểm 0 đến 10 ") 431 b[1].legend(loc='best') 432 433 b[2].plot(a4.index,a4, color = 'violet', ls = '--', marker = 's', lw = 2,label='Ycn') 434 b[2].plot(a5.index,a5, color = 'r', ls = '--', marker = 's', lw = 2,label='Ytn') 435 b[2].set_xlabel("SV Khoa Điện khóa 2016 (c)") 436 b[2].set_ylabel("Điểm 0 đến 10 ") 437 b[2].legend(loc='best') 438 plt.tight_layout() 439 plt.show() 440 441 ## Biểu đồ dạng cột so sánh điểm cn và tn 442 plt.plot(S0 + 0.00,d04,color = 'y', ls = '--', marker = 's', lw = 2,label='Điểm chuyên ngành') 443 plt.plot(S0 + 0.25,d05,color = 'c', ls = '--', marker = 's', lw = 2,label='Điểm TB tốt nghiệp')

444 plt.ylabel('Điểm của sinh viên từ 0 đến 10') 445 plt.xlabel('Số lượng sinh viên của khóa 2016') 446 plt.show() 447 448 ## so sánh Điểm tốt nghiệp SV 449 450 plt.plot(S1,a5,color = 'g', ls = '--',label='SV Cơ khí động lực') 451 plt.plot(S2,b5,color = 'r', ls = '--',label='SV Cơ khí chế tạo') 452 plt.plot(S3,c5,color = 'b', ls = '--',label='SV Khoa Điện') 453 plt.ylabel('Điểm tốt nghiệp của sinh viên từ 0 đến 10') 454 plt.xlabel('Số lượng sinh viên mỗi Khoa') 455 plt.legend(loc='best') 456 plt.show() 457 458 ### So sánh diem TN và có viec lam sV 459 fig, h = plt.subplots(1, 2, sharey=False, sharex=False) 460 fig.set_figwidth(16) 461 fig.set_figheight(8) 462 463 h[0].plot(e4.index,e4, color = 'b', ls = '--', marker = 's', lw = 2,label='Ycn chưa làm')

464 h[0].set_xlabel("SV có việc làm và chưa việc làm điểm CN (a)") 465 h[0].plot(f4.index,f4, color = 'c', ls = '--', marker = 's', lw = 2,label='Ycn có việc làm')

466 h[0].set_ylabel("Điểm 0 đến 10 ") 467 h[0].legend(loc='best') 468 469 h[1].plot(e5.index,e5, color = 'b', ls = '--', marker = 's', lw = 2,label='Ytn chưa làm')

470 h[1].set_xlabel("SV có việc làm và chưa việc làm điểm TN (b)") 471 h[1].plot(f5.index,f5, color = 'c', ls = '--', marker = 's', lw = 2,label='Ytn có việc làm')

472 h[1].set_ylabel("Điểm 0 đến 10 ") 473 h[1].legend(loc='best') 474 plt.tight_layout() 475 plt.show() 476 477 478 ##

479 plt.plot(s4,e4,color = 'b', ls = '--',label='Điểm Ycn chưa có việc') 480 plt.plot(s4,e5,color = 'r', ls = '--',label='Điểm Ytn chưa có việc') 481 plt.plot(s5,f4,color = 'y', ls = '--',label='Điểm Ycn có việc làm') 482 plt.plot(s5,f5,color = 'c', ls = '--',label='Điểm Ytn có việc làm') 483 plt.ylabel('Điểm của sinh viên từ 0 đến 10') 484 plt.xlabel('Số lượng sinh viên khóa 2016') 485 plt.legend(loc='best') 486 plt.show() 487 488 ## 3D 489 from mpl_toolkits.mplot3d import Axes3D 490 import matplotlib.pyplot as plt 491 import numpy as np 492 import pandas as pd 493 import xlrd 494 495 def DIEMSV(): 496 497 498 book = xlrd.open_workbook(r'./DATA_YEN1.xlsx') sheet = book.sheet_by_name('DIEMSV1') array = [[sheet.cell_value(r, c) for c in range(sheet.ncols)] for r in range(sheet.nrows)]

data = np.array(array)

499 500 501 502

column_names = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18', '19','20'] row_names = ['NĂM 1','NĂM 2','NĂM 3','Điểm CN','Điểm TN']

fig = plt.figure(figsize=(10 , 15)) ax = Axes3D(fig) fig.suptitle('Biểu đồ điểm khoa cơ khí đo lường', fontsize=18, x=0.4, y =1)

ax.set_xlim3d(0,6) ax.set_ylim3d(0,5) ax.set_zlim3d(0,10)

lx= 20 ly= 5 xpos = np.arange(0.25,lx+0.25,1) ypos = np.arange(0.1,ly+0.1,1) xpos, ypos = np.meshgrid(xpos, ypos)

xpos = xpos.flatten() ypos = ypos.flatten() zpos = np.zeros(lx*ly)

dx = 0.5 * np.ones_like(zpos) dy = 0.3 * np.ones_like(zpos) dz = data.flatten()

##for i in range(0,lx*ly): 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 ## ax.text(xpos[i], ypos[i], dz[i],'{:.00f}'.format(dz[i]),color='#FF0040', fontsize=8,fontweight='bold')

529 530

cs = ['#00FF00','#0000FF','#FF00FF','#FF0040','#C0C0C0','#FFFF00','#008080','#800080',' #008000','#808000','#800000','#00FFFF','#800000','#00FFFF','#00FF00','#0000FF','#F F00FF','#FF0040','#C0C0C0','#FFFF00'] * 5

ax.bar3d(xpos,ypos,zpos, dx, dy, dz, color=cs)

ticksx = np.arange(0.5, lx+0.5, 1) plt.xticks(ticksx, column_names)

ticksy = np.arange(0, ly, 1) plt.yticks(ticksy , row_names)

ax.set_xlabel('Danh sách sinh viên')

531 532 533 534 535 536 537 538 539 540 541 ################# CÁC CHÚ GIẢI MÀU SẮC CỘT 542 543 plt.plot([0, 0], [0, 0],color='#00FF00', label='sv1', lw = 6) plt.plot([0, 0], [0, 0],color='#0000FF', label='sv2', lw = 6)

plt.plot([0, 0], [0, 0],color='#FF00FF', label='sv3', lw = 6)

ax.legend(ncol=1,loc= 'upper right',title="CHÚ GIẢI")

plt.show()

544 545 546 547 548 549 550 DIEMSV() 551 552 553 from mpl_toolkits.mplot3d import Axes3D 554 import matplotlib.pyplot as plt 555 import numpy as np 556 import pandas as pd 557 import xlrd 558 559 def DIEMSV2(): 560 561 562 book = xlrd.open_workbook(r'./DATA_YEN2.xlsx') sheet = book.sheet_by_name('CKCT') array = [[sheet.cell_value(r, c) for c in range(sheet.ncols)] for r in range(sheet.nrows)]

data = np.array(array)

563 564 565 566

column_names = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'] row_names = ['NĂM 1','NĂM 2','NĂM 3','Điểm CN','Điểm TN']

fig = plt.figure(figsize=(10 , 15)) ax = Axes3D(fig) fig.suptitle('Biểu đồ điểm khoa cơ khí chế tạo', fontsize=18, x=0.4, y =1)

ax.set_xlim3d(0,6) ax.set_ylim3d(0,5) ax.set_zlim3d(0,10)

lx= 16 ly= 5 xpos = np.arange(0.25,lx+0.25,1) ypos = np.arange(0.1,ly+0.1,1) xpos, ypos = np.meshgrid(xpos, ypos)

xpos = xpos.flatten() ypos = ypos.flatten() zpos = np.zeros(lx*ly)

dx = 0.5 * np.ones_like(zpos) dy = 0.3 * np.ones_like(zpos) dz = data.flatten()

##for i in range(0,lx*ly): 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 ## ax.text(xpos[i], ypos[i], dz[i],'{:.00f}'.format(dz[i]),color='#FF0040', fontsize=8,fontweight='bold')

593 594

cs = ['#00FF00','#0000FF','#FF00FF','#FF0040','#C0C0C0','#FFFF00','#008080','#800080',' #008000','#808000','#800000','#00FFFF','#800000','#00FFFF','#00FF00','#0000FF'] * 5

ax.bar3d(xpos,ypos,zpos, dx, dy, dz, color=cs)

ticksx = np.arange(0.5, lx+0.5, 1) plt.xticks(ticksx, column_names)

ticksy = np.arange(0, ly, 1) plt.yticks(ticksy , row_names)

ax.set_xlabel('Danh sách sinh viên trong khoa')

plt.plot([0, 0], [0, 0],color='#00FF00', label='sv1', lw = 6) plt.plot([0, 0], [0, 0],color='#0000FF', label='sv2', lw = 6) plt.plot([0, 0], [0, 0],color='#FF00FF', label='sv3', lw = 6) 595 596 597 598 599 600 601 602 603 604 605 ################# CÁC CHÚ GIẢI MÀU SẮC CỘT 606 607 608 609

ax.legend(ncol=1,loc= 'upper right',title="CHÚ GIẢI")

plt.show()

610 611 612 613 614 DIEMSV2() 615 616 from mpl_toolkits.mplot3d import Axes3D 617 import matplotlib.pyplot as plt 618 import numpy as np 619 import pandas as pd 620 import xlrd 621 622 def DIEMSV(): 623 624 625 book = xlrd.open_workbook(r'./DATA_YEN1.xlsx') sheet = book.sheet_by_name('DIEN') array = [[sheet.cell_value(r, c) for c in range(sheet.ncols)] for r in range(sheet.nrows)]

data = np.array(array)

626 627 628 629

column_names = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18', '19','20'] row_names = ['NĂM 1','NĂM 2','NĂM 3','Điểm CN','Điểm TN']

fig = plt.figure(figsize=(10 , 15)) ax = Axes3D(fig) fig.suptitle('Biểu đồ điểm khoa điện', fontsize=18, x=0.4, y =1)

ax.set_xlim3d(0,6) ax.set_ylim3d(0,5) ax.set_zlim3d(0,10)

lx= 20 ly= 5 xpos = np.arange(0.25,lx+0.25,1) ypos = np.arange(0.1,ly+0.1,1) xpos, ypos = np.meshgrid(xpos, ypos)

xpos = xpos.flatten() ypos = ypos.flatten() zpos = np.zeros(lx*ly)

dx = 0.5 * np.ones_like(zpos) dy = 0.3 * np.ones_like(zpos) dz = data.flatten()

# for i in range(0,lx*ly): 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 # ax.text(xpos[i], ypos[i], dz[i],'{:.00f}'.format(dz[i]),color='#FF0040', fontsize=8,fontweight='bold')

656 657

cs = ['#00FF00','#0000FF','#FF00FF','#FF0040','#C0C0C0','#FFFF00','#008080','#800080',' #008000','#808000','#800000','#00FFFF','#800000','#00FFFF','#00FF00','#0000FF','#F F00FF','#FF0040','#C0C0C0','#FFFF00'] * 5

ax.bar3d(xpos,ypos,zpos, dx, dy, dz, color=cs)

ticksx = np.arange(0.5, lx+0.5, 1) plt.xticks(ticksx, column_names)

ticksy = np.arange(0, ly, 1) plt.yticks(ticksy , row_names)

ax.set_xlabel('Danh sách sinh viên')

plt.plot([0, 0], [0, 0],color='#00FF00', label='sv1', lw = 6) plt.plot([0, 0], [0, 0],color='#0000FF', label='sv2', lw = 6) plt.plot([0, 0], [0, 0],color='#FF00FF', label='sv3', lw = 6)

ax.legend(ncol=1,loc= 'upper right',title="CHÚ GIẢI") 658 659 660 661 662 663 664 665 666 667 668 ################# CÁC CHÚ GIẢI MÀU SẮC CỘT 669 670 671 672 673 674

plt.show()

675 676 677 DIEMSV() 678 679 from mpl_toolkits.mplot3d import Axes3D 680 import matplotlib.pyplot as plt 681 import numpy as np 682 import pandas as pd 683 import xlrd 684 685 def DIEMSV(): 686 687 688 book = xlrd.open_workbook(r'./DATA_CN.xlsx') sheet = book.sheet_by_name('DIEMCN') array = [[sheet.cell_value(r, c) for c in range(sheet.ncols)] for r in range(sheet.nrows)]

data = np.array(array)

689 690 691 692

column_names = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18', '19','20'] row_names = ['Khoa CKDL','Khoa CKCT','Khoa Dien']

fig = plt.figure(figsize=(10 , 15)) ax = Axes3D(fig) fig.suptitle('Biểu đồ điểm chuyên ngành 3 khoa', fontsize=18, x=0.4, y =1)

ax.set_xlim3d(0,6) ax.set_ylim3d(0,3) ax.set_zlim3d(0,10)

lx= 20 ly= 3 xpos = np.arange(0.25,lx+0.25,1) ypos = np.arange(0.1,ly+0.1,1) xpos, ypos = np.meshgrid(xpos, ypos)

xpos = xpos.flatten() ypos = ypos.flatten() zpos = np.zeros(lx*ly)

dx = 0.5 * np.ones_like(zpos) dy = 0.3 * np.ones_like(zpos) dz = data.flatten()

#for i in range(0,lx*ly): 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 #ax.text(xpos[i], ypos[i], dz[i],'{:.00f}'.format(dz[i]),color='#FF0040', fontsize=8,fontweight='bold')

719 720

cs = ['#00FF00','#0000FF','#FF00FF','#FF0040','#C0C0C0','#FFFF00','#008080','#800080',' #008000','#808000','#800000','#00FFFF','#800000','#00FFFF','#00FF00','#0000FF','#F F00FF','#FF0040','#C0C0C0','#FFFF00'] * 3

ax.bar3d(xpos,ypos,zpos, dx, dy, dz, color=cs)

ticksx = np.arange(0.5, lx+0.5, 1) plt.xticks(ticksx, column_names)

ticksy = np.arange(0, ly, 1) plt.yticks(ticksy , row_names)

ax.set_xlabel('Danh sách sinh viên')

plt.plot([0, 0], [0, 0],color='#00FF00', label='sv1', lw = 6) plt.plot([0, 0], [0, 0],color='#0000FF', label='sv2', lw = 6) plt.plot([0, 0], [0, 0],color='#FF00FF', label='sv3', lw = 6)

ax.legend(ncol=1,loc= 'upper right',title="CHÚ GIẢI")

plt.show() 721 722 723 724 725 726 727 728 729 730 731 ################# CÁC CHÚ GIẢI MÀU SẮC CỘT 732 733 734 735 736 737 738 739

740 DIEMSV() 741 from mpl_toolkits.mplot3d import Axes3D 742 import matplotlib.pyplot as plt 743 import numpy as np 744 import pandas as pd 745 import xlrd 746 747 def DIEMSV(): 748 749 750 book = xlrd.open_workbook(r'./DATA_TN.xlsx') sheet = book.sheet_by_name('DIEMTN') array = [[sheet.cell_value(r, c) for c in range(sheet.ncols)] for r in range(sheet.nrows)]

data = np.array(array)

751 752 753 754

column_names = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18', '19','20'] row_names = ['Khoa CKDL','Khoa CKCT','Khoa Dien']

fig = plt.figure(figsize=(10 , 15)) ax = Axes3D(fig) fig.suptitle('Biểu đồ điểm năm 1 giữa 3 khoa', fontsize=18, x=0.4, y =1)

ax.set_xlim3d(0,6) ax.set_ylim3d(0,3) ax.set_zlim3d(0,10)

lx= 20 ly= 3 xpos = np.arange(0.25,lx+0.25,1) ypos = np.arange(0.1,ly+0.1,1) xpos, ypos = np.meshgrid(xpos, ypos)

xpos = xpos.flatten() ypos = ypos.flatten() zpos = np.zeros(lx*ly)

dx = 0.5 * np.ones_like(zpos) dy = 0.3 * np.ones_like(zpos) dz = data.flatten()

#for i in range(0,lx*ly): 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 #ax.text(xpos[i], ypos[i], dz[i],'{:.00f}'.format(dz[i]),color='#FF0040', fontsize=8,fontweight='bold')

781 782

cs = ['#00FF00','#0000FF','#FF00FF','#FF0040','#C0C0C0','#FFFF00','#008080','#800080',' #008000','#808000','#800000','#00FFFF','#800000','#00FFFF','#00FF00','#0000FF','#F F00FF','#FF0040','#C0C0C0','#FFFF00'] * 3

ax.bar3d(xpos,ypos,zpos, dx, dy, dz, color=cs)

ticksx = np.arange(0.5, lx+0.5, 1) plt.xticks(ticksx, column_names)

ticksy = np.arange(0, ly, 1) plt.yticks(ticksy , row_names)

ax.set_xlabel('Danh sách sinh viên')

plt.plot([0, 0], [0, 0],color='#00FF00', label='sv1', lw = 6) plt.plot([0, 0], [0, 0],color='#0000FF', label='sv2', lw = 6) plt.plot([0, 0], [0, 0],color='#FF00FF', label='sv3', lw = 6)

ax.legend(ncol=1,loc= 'upper right',title="CHÚ GIẢI")

plt.show()

783 784 785 786 787 788 789 790 791 792 793 ################# CÁC CHÚ GIẢI MÀU SẮC CỘT 794 795 796 797 798 799 800 801 802 DIEMSV() 803 from mpl_toolkits.mplot3d import Axes3D 804 import matplotlib.pyplot as plt

805 import numpy as np 806 import pandas as pd 807 import xlrd 808 809 def DIEMSV(): 810 811 812 book = xlrd.open_workbook(r'./DATA_TN.xlsx') sheet = book.sheet_by_name('DIEMTN') array = [[sheet.cell_value(r, c) for c in range(sheet.ncols)] for r in range(sheet.nrows)]

data = np.array(array)

813 814 815 816

column_names = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18', '19','20'] row_names = ['Khoa CKDL','Khoa CKCT','Khoa Dien']

fig = plt.figure(figsize=(10 , 15)) ax = Axes3D(fig) fig.suptitle('Biểu đồ điểm năm 1 giữa 3 khoa', fontsize=18, x=0.4, y =1)

ax.set_xlim3d(0,6) ax.set_ylim3d(0,3) ax.set_zlim3d(0,10)

lx= 20 ly= 3 xpos = np.arange(0.25,lx+0.25,1) ypos = np.arange(0.1,ly+0.1,1) xpos, ypos = np.meshgrid(xpos, ypos)

xpos = xpos.flatten() ypos = ypos.flatten() zpos = np.zeros(lx*ly)

dx = 0.5 * np.ones_like(zpos) dy = 0.3 * np.ones_like(zpos) dz = data.flatten()

#for i in range(0,lx*ly): 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 #ax.text(xpos[i], ypos[i], dz[i],'{:.00f}'.format(dz[i]),color='#FF0040', fontsize=8,fontweight='bold')

843 844

cs = ['#00FF00','#0000FF','#FF00FF','#FF0040','#C0C0C0','#FFFF00','#008080','#800080',' #008000','#808000','#800000','#00FFFF','#800000','#00FFFF','#00FF00','#0000FF','#F F00FF','#FF0040','#C0C0C0','#FFFF00'] * 3

ax.bar3d(xpos,ypos,zpos, dx, dy, dz, color=cs)

ticksx = np.arange(0.5, lx+0.5, 1) plt.xticks(ticksx, column_names)

ticksy = np.arange(0, ly, 1) plt.yticks(ticksy , row_names)

ax.set_xlabel('Danh sách sinh viên')

plt.plot([0, 0], [0, 0],color='#00FF00', label='sv1', lw = 6) plt.plot([0, 0], [0, 0],color='#0000FF', label='sv2', lw = 6) plt.plot([0, 0], [0, 0],color='#FF00FF', label='sv3', lw = 6)

ax.legend(ncol=1,loc= 'upper right',title="CHÚ GIẢI")

plt.show()

845 846 847 848 849 850 851 852 853 854 855 ################# CÁC CHÚ GIẢI MÀU SẮC CỘT 856 857 858 859 860 861 862 863 864 DIEMSV() 865 from mpl_toolkits.mplot3d import Axes3D 866 import matplotlib.pyplot as plt 867 import numpy as np 868 import pandas as pd 869 import xlrd

870 871 def DIEMSV(): 872 873 874 book = xlrd.open_workbook(r'./DATA_TN.xlsx') sheet = book.sheet_by_name('DIEMTN') array = [[sheet.cell_value(r, c) for c in range(sheet.ncols)] for r in range(sheet.nrows)]

data = np.array(array)

875 876 877 878

column_names = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18', '19','20'] row_names = ['Khoa CKDL','Khoa CKCT','Khoa Dien']

fig = plt.figure(figsize=(10 , 15)) ax = Axes3D(fig) fig.suptitle('Biểu đồ điểm năm 1 giữa 3 khoa', fontsize=18, x=0.4, y =1)

ax.set_xlim3d(0,6) ax.set_ylim3d(0,3) ax.set_zlim3d(0,10)

lx= 20 ly= 3 xpos = np.arange(0.25,lx+0.25,1) ypos = np.arange(0.1,ly+0.1,1) xpos, ypos = np.meshgrid(xpos, ypos)

xpos = xpos.flatten() ypos = ypos.flatten() zpos = np.zeros(lx*ly)

dx = 0.5 * np.ones_like(zpos) dy = 0.3 * np.ones_like(zpos) dz = data.flatten()

#for i in range(0,lx*ly): 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 #ax.text(xpos[i], ypos[i], dz[i],'{:.00f}'.format(dz[i]),color='#FF0040', fontsize=8,fontweight='bold')

905 906

cs = ['#00FF00','#0000FF','#FF00FF','#FF0040','#C0C0C0','#FFFF00','#008080','#800080',' #008000','#808000','#800000','#00FFFF','#800000','#00FFFF','#00FF00','#0000FF','#F F00FF','#FF0040','#C0C0C0','#FFFF00'] * 3

ax.bar3d(xpos,ypos,zpos, dx, dy, dz, color=cs)

ticksx = np.arange(0.5, lx+0.5, 1) plt.xticks(ticksx, column_names)

ticksy = np.arange(0, ly, 1) plt.yticks(ticksy , row_names)

ax.set_xlabel('Danh sách sinh viên')

plt.plot([0, 0], [0, 0],color='#00FF00', label='sv1', lw = 6) plt.plot([0, 0], [0, 0],color='#0000FF', label='sv2', lw = 6) plt.plot([0, 0], [0, 0],color='#FF00FF', label='sv3', lw = 6)

ax.legend(ncol=1,loc= 'upper right',title="CHÚ GIẢI")

plt.show()

907 908 909 910 911 912 913 914 915 916 917 ################# CÁC CHÚ GIẢI MÀU SẮC CỘT 918 919 920 921 922 923 924 925 926 DIEMSV() 927 from mpl_toolkits.mplot3d import Axes3D 928 import matplotlib.pyplot as plt 929 import numpy as np 930 import pandas as pd 931 import xlrd 932 933 def DIEMSV(): 934 book = xlrd.open_workbook(r'./DATA_TN.xlsx')

935 936 sheet = book.sheet_by_name('DIEMTN') array = [[sheet.cell_value(r, c) for c in range(sheet.ncols)] for r in range(sheet.nrows)]

data = np.array(array)

937 938 939 940

column_names = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18', '19','20'] row_names = ['Khoa CKDL','Khoa CKCT','Khoa Dien']

fig = plt.figure(figsize=(10 , 15)) ax = Axes3D(fig) fig.suptitle('Biểu đồ điểm năm 1 giữa 3 khoa', fontsize=18, x=0.4, y =1)

ax.set_xlim3d(0,6) ax.set_ylim3d(0,3) ax.set_zlim3d(0,10)

lx= 20 ly= 3 xpos = np.arange(0.25,lx+0.25,1) ypos = np.arange(0.1,ly+0.1,1) xpos, ypos = np.meshgrid(xpos, ypos)

xpos = xpos.flatten() ypos = ypos.flatten() zpos = np.zeros(lx*ly)

dx = 0.5 * np.ones_like(zpos) dy = 0.3 * np.ones_like(zpos) dz = data.flatten()

#for i in range(0,lx*ly): 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 #ax.text(xpos[i], ypos[i], dz[i],'{:.00f}'.format(dz[i]),color='#FF0040', fontsize=8,fontweight='bold')

967 968

cs = ['#00FF00','#0000FF','#FF00FF','#FF0040','#C0C0C0','#FFFF00','#008080','#800080',' #008000','#808000','#800000','#00FFFF','#800000','#00FFFF','#00FF00','#0000FF','#F F00FF','#FF0040','#C0C0C0','#FFFF00'] * 3

ax.bar3d(xpos,ypos,zpos, dx, dy, dz, color=cs)

ticksx = np.arange(0.5, lx+0.5, 1) plt.xticks(ticksx, column_names)

ticksy = np.arange(0, ly, 1) plt.yticks(ticksy , row_names)

ax.set_xlabel('Danh sách sinh viên')

plt.plot([0, 0], [0, 0],color='#00FF00', label='sv1', lw = 6) plt.plot([0, 0], [0, 0],color='#0000FF', label='sv2', lw = 6) plt.plot([0, 0], [0, 0],color='#FF00FF', label='sv3', lw = 6)

ax.legend(ncol=1,loc= 'upper right',title="CHÚ GIẢI")

plt.show()

969 970 971 972 973 974 975 976 977 978 979 ################# CÁC CHÚ GIẢI MÀU SẮC CỘT 980 981 982 983 984 985 986 987 988 DIEMSV() 989 from mpl_toolkits.mplot3d import Axes3D 990 import matplotlib.pyplot as plt 991 import numpy as np 992 import pandas as pd 993 import xlrd 994 995 def DIEMSV(): 996 997 998 book = xlrd.open_workbook(r'./DATA_TN.xlsx') sheet = book.sheet_by_name('DIEMTN') array = [[sheet.cell_value(r, c) for c in range(sheet.ncols)] for r in range(sheet.nrows)]

data = np.array(array)

999 1000 1001 1002

column_names = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18', '19','20'] row_names = ['Khoa CKDL','Khoa CKCT','Khoa Dien']

fig = plt.figure(figsize=(10 , 15)) ax = Axes3D(fig) fig.suptitle('Biểu đồ điểm tốt nghiệp 3 khoa', fontsize=18, x=0.4, y =1)

ax.set_xlim3d(0,6) ax.set_ylim3d(0,3) ax.set_zlim3d(0,10)

lx= 20 ly= 3 xpos = np.arange(0.25,lx+0.25,1) ypos = np.arange(0.1,ly+0.1,1) xpos, ypos = np.meshgrid(xpos, ypos)

xpos = xpos.flatten() ypos = ypos.flatten() zpos = np.zeros(lx*ly)

dx = 0.5 * np.ones_like(zpos) dy = 0.3 * np.ones_like(zpos) dz = data.flatten()

#for i in range(0,lx*ly): 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 #ax.text(xpos[i], ypos[i], dz[i],'{:.00f}'.format(dz[i]),color='#FF0040', fontsize=8,fontweight='bold')

1029 1030

cs = ['#00FF00','#0000FF','#FF00FF','#FF0040','#C0C0C0','#FFFF00','#008080','#800080',' #008000','#808000','#800000','#00FFFF','#800000','#00FFFF','#00FF00','#0000FF','#F F00FF','#FF0040','#C0C0C0','#FFFF00'] * 3

ax.bar3d(xpos,ypos,zpos, dx, dy, dz, color=cs)

ticksx = np.arange(0.5, lx+0.5, 1) plt.xticks(ticksx, column_names)

ticksy = np.arange(0, ly, 1) plt.yticks(ticksy , row_names)

ax.set_xlabel('Danh sách sinh viên')

plt.plot([0, 0], [0, 0],color='#00FF00', label='sv1', lw = 6) plt.plot([0, 0], [0, 0],color='#0000FF', label='sv2', lw = 6) plt.plot([0, 0], [0, 0],color='#FF00FF', label='sv3', lw = 6)

ax.legend(ncol=1,loc= 'upper right',title="CHÚ GIẢI")

plt.show()

1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 ################# CÁC CHÚ GIẢI MÀU SẮC CỘT 1042 1043 1044 1045 1046 1047 1048 1049 1050 DIEMSV() 1051 1052 import tkinter as tk 1053 from tkinter import filedialog 1054 import pandas as pd 1055 from pandas import DataFrame 1056 import matplotlib.pyplot as plt 1057 from sklearn.cluster import KMeans 1058 from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg 1059 1060 root = tk.Tk() 1061 1062 canvas1 = tk.Canvas(root, width=400, height=300, relief='raised') 1063 canvas1.pack() 1064

global df import_file_path = filedialog.askopenfilename() read_file = pd.read_excel(import_file_path) df = DataFrame(read_file, columns=['Y1','Y2','Y3'])

1065 label1 = tk.Label(root, text='Thuật toán phân cụm K-Means') 1066 label1.config(font=('helvetica', 14)) 1067 canvas1.create_window(200, 25, window=label1) 1068 1069 label2 = tk.Label(root, text='Nhập số cụm (K):') 1070 label2.config(font=('helvetica', 8)) 1071 canvas1.create_window(200, 120, window=label2) 1072 1073 entry1 = tk.Entry(root) 1074 canvas1.create_window(200, 140, window=entry1) 1075 1076 1077 def getExcel(): 1078 1079 1080 1081 1082 1083 1084 browseButtonExcel = tk.Button(text=" Nhập File Excel K_MEANS", command=getExcel, bg='green', fg='white', font=('helvetica', 10, 'bold'))

global df global numberOfClusters numberOfClusters = int(entry1.get())

kmeans = KMeans(n_clusters=numberOfClusters).fit(df) centroids = kmeans.cluster_centers_

label3 = tk.Label(root, text=centroids) canvas1.create_window(200, 250, window=label3)

figure2 = plt.Figure(figsize=(4, 3), dpi=100) ax2 = figure2.add_subplot(111) ax2.scatter(df['Y1'], df['Y2'], c=kmeans.labels_.astype(float), s=50, alpha=0.5) ax2.scatter(centroids[:, 0], centroids[:, 1], c='red', s=50) scatter2 = FigureCanvasTkAgg(figure2, root) scatter2.get_tk_widget().pack(side=tk.RIGHT, fill=tk.BOTH)

1085 1086 canvas1.create_window(200, 70, window=browseButtonExcel) 1087 1088 1089 def getKMeans(): 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 processButton = tk.Button(text=' Quá trình phân Cụm K-Means (Y1, Y2,Y3)', command=getKMeans, bg='brown', fg='white', font=('helvetica', 10, 'bold'))

1108 1109 canvas1.create_window(200, 170, window=processButton) 1110 1111 plt.show() 1112 root.mainloop() 1113 1114 1115 import tkinter as tk 1116 from tkinter import filedialog 1117 import pandas as pd 1118 from pandas import DataFrame 1119 import matplotlib.pyplot as plt 1120 from sklearn.cluster import KMeans 1121 from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg 1122 1123 root = tk.Tk() 1124 1125 canvas1 = tk.Canvas(root, width=400, height=300, relief='raised') 1126 canvas1.pack() 1127 1128 label1 = tk.Label(root, text='Thuật toán phân cụm K-Means') 1129 label1.config(font=('helvetica', 14)) 1130 canvas1.create_window(200, 25, window=label1) 1131 1132 label2 = tk.Label(root, text='Nhập số cụm (K):') 1133 label2.config(font=('helvetica', 8)) 1134 canvas1.create_window(200, 120, window=label2)

global df import_file_path = filedialog.askopenfilename() read_file = pd.read_excel(import_file_path) df = DataFrame(read_file, columns=['Y1','Y2','Y3','Ycn','Ytn'])

1135 1136 entry1 = tk.Entry(root) 1137 canvas1.create_window(200, 140, window=entry1) 1138 1139 1140 def getExcel(): 1141 1142 1143 1144 1145 1146 1147 browseButtonExcel = tk.Button(text=" Nhập File Excel K_MEANS", command=getExcel, bg='green', fg='white', font=('helvetica', 10, 'bold'))

global df global numberOfClusters numberOfClusters = int(entry1.get())

kmeans = KMeans(n_clusters=numberOfClusters).fit(df) centroids = kmeans.cluster_centers_

label3 = tk.Label(root, text=centroids) canvas1.create_window(200, 250, window=label3)

figure2 = plt.Figure(figsize=(4, 3), dpi=100) ax2 = figure2.add_subplot(111) ax2.scatter(df['Ycn'], df['Ytn'], c=kmeans.labels_.astype(float), s=50, alpha=0.5) ax2.scatter(centroids[:, 0], centroids[:, 1], c='red', s=50) scatter2 = FigureCanvasTkAgg(figure2, root) scatter2.get_tk_widget().pack(side=tk.RIGHT, fill=tk.BOTH)

1148 1149 canvas1.create_window(200, 70, window=browseButtonExcel) 1150 1151 1152 def getKMeans(): 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 processButton = tk.Button(text=' Quá trình phân Cụm K-Means (Ycn, Ytn)', command=getKMeans, bg='brown', fg='white', font=('helvetica', 10, 'bold'))

1171 1172 canvas1.create_window(200, 170, window=processButton) 1173 1174 plt.show() 1175 root.mainloop() 1176 1177 1178 1179