1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo chuyên Đề học phần khai phá dữ liệu Đề ti áp dụng thuật toán kmeans Để phân cụm học sinh

16 0 0
Tài liệu đã được kiểm tra trùng lặp

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Áp Dụng Thuật Toán Kmeans Để Phân Cụm Học Sinh
Tác giả Giang Ứng Hùng, Phạm Hải Nam, Nguyễn Đức Huy
Người hướng dẫn Nguyễn Thị Thanh Tân
Trường học Trường Đại Học Điện Lực
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo Cáo Chuyên Đề
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 16
Dung lượng 1,57 MB

Nội dung

TRƯỜNG ĐẠI HỌC ĐIỆN LỰCKHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN KHAI PHÁ DỮ LIỆU ĐỀ TI: ÁP DỤNG THUẬT TOÁN KMEANS ĐỂ PHÂN CỤM HỌC SINH Sinh viên thực hiện : GIANG ỨNG HÙNG P

Trang 1

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN

KHAI PHÁ DỮ LIỆU

ĐỀ TI:

ÁP DỤNG THUẬT TOÁN KMEANS ĐỂ PHÂN CỤM HỌC SINH

Sinh viên thực hiện : GIANG ỨNG HÙNG

PHẠM HẢI NAM NGUYỄN ĐỨC HUY Giảng viên hướng dẫn : NGUYỄN THỊ THANH TÂN

Trang 2

PHIẾU CHẤM ĐIỂM

GIANG ỨNG HÙNG

20810310343

PHẠM HẢI NAM

20810313033

NGUYỄN ĐỨC HUY

20810310308

Giảng viên chấm 1:

Giảng viên chấm 2:

MỤC LỤC LỜI NÓI ĐẦU 4

2

Trang 3

CHƯƠNG 1: TỔNG QUAN BI TOÁN PHÂN CỤM DỮ LIỆU 5

1.1 PHÁT BIỂU BÀI TOÁN PHÂN CỤM DỮ LIỆU 5

1.1.1 Khái niệm khai phá dữ liệu: 5

1.1.2 Phân loại dữ liệu (classification): 5

1.1.3 Phân cụm dữ liệu: 5

CHƯƠNG 2: THUẬT TOÁN KMEANS 7

2.1 Ý TƯỞNG CỦA THUẬT TOÁN KMEANS: 7

2.1.1 Giới thiệu thuật toán Kmean: 7

2.1.2 Đặc điểm của thuật toán Kmeans 8

2.1.3 Nhân xét, đánh giá thuật toán: 9

CHƯƠNG 3: CI ĐẶT THỬ NGHIỆM THUẬT TOÁN 10

3.1 Dữ liệu đầu vào 10

3.2 Demo chương trình 11

3.3 Tiến hành phân cụm 12

KẾT LUẬN 15

TI LIỆU THAM KHẢO 16

LỜI NÓI ĐẦU

Trang 4

hết sức mạnh mẽ, to lớn và ngày một lớn mạnh thêm

Việc ứng dụng Công Nghệ Thông Tin vào các lĩnh vực làm sao để đạt được một cách có hiệu quả, sự lựa chọn và vận dụng những phần mềm sao cho phù hợp

và đạt được kết quả tốt vẫn đang là một dấu hỏi lớn cho những người nghiên cứu trong lĩnh vực này Ngày nay, các phần mềm ứng dụng công nghệ thông tin không còn xa lạ với các trường học, doanh nghiệp, công ty, cửa hàng… Các phần mềm này giúp người sử dụng rút ngắn thời gian lao động, tính toán, thuận tiện cho việc thống kê và quản lý Thế nhưng yêu cầu của người sử dụng phần mềm ngày càng

đa dạng và nhiều tính năng hơn Do đó yêu cầu người làm phần mềm phải đáp ứng được yêu cầu của phía người sử dụng

Để kết thúc môn Khai phá dữ liệu, em lựa chọn đề tài “Áp dụng thuật toán Kmeans để phân loại học sinh” Trong quá trình học tập, nhờ có sự hướng dẫn tận

tình của cô giáo Nguyễn Thị Thanh Tân, em đã hoàn thành được đề tài này Từ

đó em có thể nắm vững được cách thức thiết kế một đề tài cụ thể

Trong quá trình làm đề tài dù đã cố gắng tìm hiểu nhưng vẫn không tránh khỏi sai sót Tuy nhiên về cơ bản các chức năng chính của một hệ thống đã được

em hoàn thiện một cách tốt nhất Em mong rằng sẽ nhận được sự đóng góp ý kiến của các thầy cô để phần mềm cũng như kiến thức của em được hoàn thiện hơn

4

Trang 5

CHƯƠNG 1: TỔNG QUAN BI TOÁN PHÂN CỤM DỮ LIỆU

1.1 PHÁT BIỂU BI TOÁN PHÂN CỤM DỮ LIỆU

1.1.1 Khái niệm khai phá dữ liệu:

Khoảng hơn một thập kỷ trở lại đây, lượng thông tin được lưu trữ trên các thiết bị điện tử không nhừng tăng lên Sự tích lũy dữ liệu này xảy ra với một tốc độ bùng nổ Câu hỏi đặt ra là chúng ta có thể khai thác gì từ “núi” dữ liệu khổng lồ ấy? Và từ đó khái niệm

“khai phá dữ liệu” đã ra đời Khai phá dữ liệu được dùng để mô tả quá trình phát hiện ra tri thức trong CSDL Quá trình này kết xuất ra các tri thức tiềm ẩn từ dữ liệu giúp cho việc dự báo trong kinh doanh, các hoạt động sản xuất, Khai phá dữ liệu làm giảm chi phí

về thời gian so với phương pháp truyền thống trước kia Vậy “khai phá dữ liệu là gì”? Khai phá dữ liệu là quá trình trợ giúp quyết định, trong đó chúng ta khám phá các mẫu thông tin có ích, chưa biết và bất ngờ trong CSDL lớn Khai phá dữ liệu là một bước chính quan trọng và mang tính quyết định

1.1.2 Phân loại dữ liệu (classification):

Phân loại dữ liệu là dạng phân tích dữ liệu nhằm rút trích các mô hình mô tả các lớp

dữ liệu hoặc dự đoán xu hướng dữ liệu

Quá trình này gồm 2 bước đó là:

 Bước học (giai đoạn huấn luyện): xây dựng bộ phân loại (classifier) bằng việc phân tích/học tập huấn luyện

 Bước phân loại (classification): phân loại dữ liệu/đối tượng mới nếu độ chính xác của bộ phân loại được đánh giá là có thể chấp nhận được (acceptable)

1.1.3 Phân cụm dữ liệu:

Phân cụm dữ liệu là quá trình gom nhóm/cụm dữ liệu / đối tượng vào các nhóm, các lớp/cụm

Các đối tượng có cùng chung 1 cụm tương tự nhau hơn so với đối tượng ở cụm khác

Trang 7

CHƯƠNG 2: THUẬT TOÁN KMEANS

2.1 Ý TƯỞNG CỦA THUẬT TOÁN KMEANS:

2.1.1 Giới thiệu thuật toán Kmean:

Thuật toán K-means clustering (phân cụm K-means) nó thuộc lớp phương pháp Học không giám sát (Unsupervised Learning) Mục đích của phân cụm là tìm ra bản chất bên trong các nhóm của dữ liệu Các thuật toán phân cụm (Clustering Algorithms) đều sinh ra các cụm (clusters) Tuy nhiên, không có tiêu chí nào là được xem là tốt nhất để đánh giá hiệu quả của của phân tích phân cụm, điều này phụ thuộc vào mục đích của phân cụm như: data reduction, “natural clusters”, “useful” clusters, outlier detection K-Means là thuật toán rất quan trọng và được sử dụng phổ biến trong kỹ thuật phân cụm Tư tưởng chính của thuật toán K-Means là tìm cách phân nhóm các đối tượng (objects) đã cho vào

K cụm (K là số các cụm được xác đinh trước, K nguyên dương) sao cho tổng bình phương khoảng cách giữa các đối tượng đến tâm nhóm (centroid) là nhỏ nhất

Thuật toán K-Means thực hiện qua các bước chính sau:

 Chọn ngẫu nhiên K tâm (centroid) cho K cụm (cluster) Mỗi cụm được đại diện bằng các tâm của cụm

 Tính khoảng cách giữa các đối tượng (objects) đến K tâm (thường dùng khoảng cách Euclidean)

D(I,j) = √(|x j 1 −x i1|2+…+|x jn −x¿|2)

 Nhóm các đối tượng vào nhóm gần nhất

 Xác định lại tâm mới cho các nhóm

 Thực hiện lại bước 2 cho đến khi không có sự thay đổi nhóm nào của các đối tượng

Trang 8

2.1.2 Đặc điểm của thuật toán Kmeans

Bài toán tối ưu hóa: Cực trị cục bộ

Mỗi cụm được đặc trưng hóa bởi trung tâm của cụm (i.e đối tượng trung bình (mean))

 Không thể xác định được đối tượng trung bình???

 Số cụm k nên là bao nhiêu?

Độ phức tạp: O(nkt)

 n là số đối tượng, k là số cụm, t là số lần lặp

 k << n, t << n

Ảnh hưởng bởi nhiễu (các phần tử kì dị/biên)

Không phù hợp cho việc khai phá ra các cụm có dạng không lồi (nonconvex) hay các cụm có kích thước rất khác nhau

 Kết quả gom cụm có dạng siêu cầu (hyperspherial)

 Kích thước các cụm kết quả thường đồng đều (relatively uniform sizes)

8

Trang 9

2.1.3 Nhân xét, đánh giá thuật toán:

Ưu điểm

 Sau đây là một số ưu điểm của thuật toán phân cụm K-Means:

 Nó rất dễ hiểu và dễ thực hiện

 Nếu chúng ta có số lượng biến lớn thì K-mean sẽ nhanh hơn so với phân cụm phân cấp

 Khi tính toán lại các centroid, một thể hiện có thể thay đổi cụm

 Các cụm chặt chẽ hơn được hình thành với K-means so với phân cụm theo thứ bậc

Nhược điểm

 Sau đây là một số nhược điểm của thuật toán phân cụm K-Means:

 Có một chút khó khăn để dự đoán số lượng cụm tức là giá trị của k

 Đầu ra bị tác động mạnh bởi các đầu vào ban đầu như số cụm (giá trị của k)

 Thứ tự của dữ liệu sẽ có tác động mạnh mẽ đến kết quả cuối cùng

 Nó rất nhạy cảm với việc thay đổi tỷ lệ Nếu chúng tôi bán lại dữ liệu của mình bằng phương pháp chuẩn hóa hoặc chuẩn hóa, thì đầu ra sẽ hoàn toàn thay đổi Đầu

ra cuối cùng

 Sẽ không tốt khi thực hiện công việc phân cụm nếu các cụm có dạng hình học phức tạp

Trang 10

CHƯƠNG 3: CI ĐẶT THỬ NGHIỆM THUẬT TOÁN

3.1 Dữ liệu đầu vào

Về dữ liệu đầu vào ta có dữ liệu học tập của tập thể lớp dưới dạng file excel:

10

Trang 11

3.2 Demo chương trình

Trang 12

3.3 Tiến hành phân cụm

Import các thư viện cần thiết:

import pandas as pd

import matplotlib pyplot as plt

from sklearn cluster import KMeans

from sklearn decomposition import PCA

from sklearn preprocessing import LabelEncoder

from matplotlib backends backend_tkagg import (FigureCanvasTkAgg, NavigationToolbar2Tk)

from tkinter import *

Tiến hành đọc dữ liệu từ file excel và lưu vào dataframe:

df = pd read_excel ( 'HS.csv' )

df drop ( df columns [[ 1 , ]], 2 axis = , inplace = True )

df [ 'Loại' ] = LabelEncoder () fit_transform ( df df columns values [ [ ]]) 6

newdf = df df [ [ 'Loại' ] isin ([ 0 , , , 1 2 3 ])]

newdf drop ( df columns [[ 0 , , , ]], 1 5 6 axis = , inplace = True )

Sử dụng Tkinter để thiết kế giao diện đơn giản:

root = Tk()

root title ( 'Phân Loại học sinh với Kmeans' )

root geometry ( '1080x720' )

output = None

fig = None

n = 1

canvas = Canvas( root )

//…

pane1 = Frame(root)

pane2 = Frame(root)

pane1.pack(pady=20, side=TOP)

pane2pane1 = Frame( root )

pane1 pack pady ( = 20 , side = TOP )

L1 = Label(pane1 , text = "Nhập sốA cụm bạn muốA n phân: " )

L1 pack(side = LEFT )

E1 = Entry(pane1 , bd = , width = 20 )

E1 pack(padx = 20 , side= LEFT )

B1 = Button(master pane1 = ,

E E E E E E command= setupphancum ,

E E E E E E width= , 8

12

Trang 13

B1 pack(side = RIGHT )

pca2 = PCA( n_components = ) 2

x0_pca2 = pca2 fit_transform ( x0 )

x1_pca2 = pca2 fit_transform ( x1 )

x2_pca2 = pca2 fit_transform ( x2 )

x3_pca2 = pca2 fit_transform ( x3 )

fig = plt figure ( figsize =( 10 , 8 ))

plt title ( 'Trước khi phân cụm' )

plt scatter ( x0_pca2[:, ], 0 x0_pca2[:, 1 ], label = 'Học sinh gio Ki' )

plt scatter ( x1_pca2[:, ], 0 x1_pca2[:, 1 ], label = 'Học sinh khá' )

plt scatter ( x2_pca2[:, ], 0 x2_pca2[:, 1 ], label = 'Học sinh trung bình' ) plt scatter ( x3_pca2[:, ], 0 x3_pca2[:, 1 ], label = 'Học sinh yếA u' )

plt legend ()

output = FigureCanvasTkAgg( fig , master canvas = )

output draw ()

output get_tk_widget () pack ()

canvas pack ()

root mainloop ()

Tiến hành lưu dữ liệu dataframe vào không gian 2 chiều, sau đó sử dụng thuật toán Kmeans để phân loại dữ liệu theo số cụm mong muốn, tiến hành tìm các tâm cụm :

def phancum ():

E E xoabieudo ()

E E pca_2 = PCA( n_components= )

E E plt title ( 'Sau khi phân cụm' )

E E pca_2 fit ( newdf )

E E x_pca2 = pca_2 transform (newdf )

E E fig = plt figure (figsize=( 10 , 8 ))

E E kmeans = KMeans(n_clusters= , random_state= ,

n_init = "auto" ) fit ( x_pca2 )

E E centers = kmeans cluster_centers_

E E labels = kmeans.labels_

E E unique_labels = set( labels )

Trang 14

alpha= 0.7 )

E E E E

E E E E cluster_data = newdf labels [ == label ]

E E E E cluster_mean = cluster_data.mean()

E E E E print ( "Thống tin cụm { label } : \n " )

E E E E print ( cluster_mean )

E E E E print ()

E E plt scatter (centers [:, ], 0 centers [:, ], 1 marker= "X" , c 'red' , label= "Tâm cụm" )

E E output = FigureCanvasTkAgg(fig , master canvas = )

E E output draw ()

E E output get_tk_widget () pack ()

E E NavigationToolbar2Tk( output , root).update()

E E output get_tk_widget () pack ()

14

Trang 15

KẾT LUẬN

Trong quá trình thực hiện báo cáo của môn khai phá dữ liệu, chúng em đã được biết thêm về các chương trình ứng dụng, các thuật toán và nắm bắt được phần nào kiến thức về khai phá Từ đó chúng em cố gắng áp dụng các kiến thức

đã học vào làm báo cáo để hoàn thiện đề tài của mình Trong báo cáo của chúng

em đã sử dụng thuật toán phân cụm K-Means để phân cụm học sinh Dù đã cố gắng để bài báo cáo hoàn thiện tốt nhất, song vì thời gian có hạn và tầm hiểu biết còn rất hạn hẹp nên bài báo cáo của chúng em không tránh khỏi còn nhiều thiếu sót Em rất hy vọng có sự góp ý của thầy cô, để báo cáo của chúng em được hoàn thiện hơn nữa !

Chúng em xin chân thành cảm ơn

Trang 16

TI LIỆU THAM KHẢO

1 https://www.datacamp.com/courses/understanding-machine-learning

2 Phân cụm K-Means (K-Means clustering) (viblo.asia)

3 Phân cụm k-means – Wikipedia tiếng Việt

16

Ngày đăng: 22/01/2025, 15:13

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN