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

Áp dụng thuật toán kmeans Để phân loại học sinh

14 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 Loại Học Sinh
Tác giả 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 14
Dung lượng 1,8 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 LOẠI HỌC SINH NOTE : Cố gắng học thuộc thuật toán

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 LOẠI HỌC SINH NOTE : Cố gắng học thuộc thuật toán khả năng cao lấy điểm

Giảng viên hướng

Hà Nội, tháng 5 năm 2023

Trang 2

PHIẾU CHẤM ĐIỂM

Giảng viên chấm 1:

Trang 3

MỤC LỤC

LỜI NÓI ĐẦU 1

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

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

a) Khái niệm khai phá dữ liệu: 2

b) Phân loại dữ liệu (classification) 2

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

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

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

a) Giới thiệu thuật toán Kmean: 4

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

c) Nhân xét, đánh giá thuật toán 6

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

Trang 4

LỜI NÓI ĐẦU

Nhịp độ phát triển của Công Nghệ Thông Tin đang là một vấn đề rất được các ngành Khoa Học, Kinh Tế,Giáo Dục… quan tâm Nó hiện hữu với một tầm vóc 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ự

đượ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

Trang 5

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

1 PHÁT BIỂU BI TOÁN PHÂN CỤM 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

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)

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

4

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

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

a) 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:

o 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

o 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) = √(|𝑥𝑗1 − 𝑥𝑖1| + + |⋯ 𝑥𝑗𝑛 − | )𝑥𝑖𝑛

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

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

o 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

b) Đặ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

Trang 9

sizes)

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

 Ưu điểm

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

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

o 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

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

o 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

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

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

o Đầ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)

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

o 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

o 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

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:

Trang 11

8

Trang 12

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

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

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 *

df = pd.read_excel( 'HS.csv' )

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

Trang 13

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 Graph_2D ():

global output , fig

pca2 = PCA ( n_components = 2 )

pca2.fit(newdf)

x_pca2 = pca2.transform(newdf)

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

Classification = KMeans( n_clusters =n, random_state = ).fit(x_pca2) centers = Classification.cluster_centers_

pane2 = Frame(root)

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

pane2.pack( pady = 10, side = TOP)

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

L1.pack( side = LEFT)

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

E1.pack( padx = 20, side = LEFT)

B1 = Button( master =pane1,

text = "OK" )

B1.pack( side = RIGHT)

plot_button1 = Button( master =pane2,

text = "2 chiều" ) plot_button2 = Button( master =pane2,

text = "3 chiều" ) del_button = Button( master =pane2,

text = "Xóa" ) plot_button1.pack( padx = 10, pady = 0 side = LEFT, expand = True )

plot_button2.pack( padx = 10, pady = 0 side = LEFT, expand = True )

del_button.pack( padx = 10, pady = 0 side = LEFT, expand = True )

canvas.pack()

root.mainloop()

Trang 14

Tiến hành tương tự với không gian 3 chiều

def Graph_3D ():

global output , fig

pca3 = PCA( n_components = ) 3

pca3.fit(newdf)

x_pca3 = pca3.transform(newdf)

Classification = KMeans( n_clusters =n, random_state = ).fit(x_pca3) 0 centers = Classification.cluster_centers_

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

axis = fig.add_subplot(111, projection = '3d' )

axis.scatter(x_pca3[: , ] x_pca3[: , , ] x_pca3[: , , ] , =Classification.labels_.ast ype( float ) , s = 80 )

axis.scatter(centers[: , ] centers[: , , ] centers[: , , ] , = 'red' , marker = "X" ,

s 80 )

axis.set_xlabel( "Văn" , fontsize = 10)

axis.set_ylabel( "Toán" , fontsize = 10 )

axis.set_zlabel( "Anh" , fontsize = 10 )

output = FigureCanvasTkAgg(fig, master =canvas)

output.draw()

output.get_tk_widget().pack()

toolbar = NavigationToolbar2Tk(output, root)

toolbar.update()

output.get_tk_widget().pack()

Classification.labels_.astype( float ))

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

output = FigureCanvasTkAgg(fig, master =canvas)

output.draw()

output.get_tk_widget().pack()

toolbar = NavigationToolbar2Tk(output, root)

toolbar.update()

output.get_tk_widget().pack()

Ngày đăng: 26/12/2024, 17:09

w