0% found this document useful (0 votes)
15 views21 pages

KHUDLUD TH2 Phan Lop Du Lieu

Uploaded by

2251310043
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views21 pages

KHUDLUD TH2 Phan Lop Du Lieu

Uploaded by

2251310043
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd

Title

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP. HCM

KHOA HỌC DỮ LIỆU ỨNG DỤNG

THỰC HÀNH 2
PHÂN LỚP DỮ LIỆU VỚI PYTHON

1
PHÂN LỚP DỮ LIỆU VỚI PYTHON

 Python có nhiều thư viện hỗ trợ thực hiện các tác vụ


trong quá trình phân lớp dữ liệu.
 Tại mỗi bước trong quá trình phân lớp cần xác định
thư viện phù hợp và các hàm để xử lý.
 Khi sử dụng các hàm chức năng trong các thư viện
cần chú ý dữ liệu đầu vào và đầu ra tương ứng.

2
PHÂN LỚP DỮ LIỆU VỚI PYTHON
 Thực hiện phân lớp dữ liệu với Python gồm một số
bước cơ bản:
 Đọc file dữ liệu
 Tiền xử lý dữ liệu (nếu cần thiết)
 Phân chia dữ liệu huấn luyện và đánh giá
 Xây dựng bộ phân lớp
 Đánh giá chất lượng của bộ phân lớp.

3
PHÂN LỚP DỮ LIỆU VỚI PYTHON
VÍ DỤ 1
Cho bộ dữ liệu gồm các mẫu dữ liệu tài chính của một tổ chức cho vay liên
quan đến các thông tin để xác định khả năng cho vay đối với các cá nhân.
Mỗi mẫu dữ liệu gồm các thông tin như:
• Số người phụ thuộc (no_of_dependents)
• Học vấn (education)
• Tự kinh doanh (self_employed)
• Thu nhập (income_annum)
• Số tiền vay (loan_amount)
• Thời hạn vay (loan_term)
• Các thông tin về giá trị tài sản sở hữu (residential_assets_value,
commercial_assets_value, luxury_assets_value, bank_asset_value).
• Quyết định có cho vay hay không (loan_status).
Xây dựng bộ phân lớp bằng giải thuật k-NN với bộ dữ liệu trên để xác định
quyết định cho vay tiền đối với một cá nhân?
4
PHÂN LỚP DỮ LIỆU VỚI PYTHON
VÍ DỤ 1
Các bước thực hiện:
•Đọc dữ liệu từ file
•Tiền xử lý dữ liệu: chuẩn hóa dữ liệu
•Phân chia dữ liệu huấn luyện và đánh giá với tỷ lệ lần
lượt là 80% và 20%
•Xây dựng bộ phân lớp bằng giải thuật k-NN
•Đánh giá chất lượng của bộ phân lớp thông qua độ
chính xác

5
PHÂN LỚP DỮ LIỆU VỚI PYTHON
VÍ DỤ 1
Chuẩn bị
 Trên Google Drive, tạo thư mục “KHDLUD” (nếu chưa có)
và tải file loan_approval_dataset.csv đặt trong thư mục
“KHDLUD
 Tạo file Google Colab và đặt tên là TH2_VD1.ipynb

6
PHÂN LỚP DỮ LIỆU VỚI PYTHON
VÍ DỤ 1
Đọc file dữ liệu
 Tạo hai ô code với nội dung như sau:
from [Link] import drive
[Link]('/content/drive')

import pandas as pd
#Đọc dữ liệu từ file loan_approval_dataset.csv trong thư
mục KHDLUD trên Google Drive
data = pd.read_csv("drive/My
Drive/KHDLUD/loan_approval_dataset.csv")
#In ra dữ liệu 10 dòng đầu tiên
[Link](10)

 Chạy lần lượt các ô code để đọc file dữ liệu

7
PHÂN LỚP DỮ LIỆU VỚI PYTHON
VÍ DỤ 1
Tiền xử lý dữ liệu

 Giải thuật k-NN chỉ làm việc với các giá trị số nên cần chuyển các giá trị
tại cột education và self_employed thành các giá trị số nguyên bằng
đoạn code sau:
data['education'], _ = [Link](data['education'])
data['self_employed'], _ = [Link](data['self_employed'])
[Link](5)

 Tạo một ô code và chạy đoạn code trên


8
PHÂN LỚP DỮ LIỆU VỚI PYTHON
VÍ DỤ 1
Tiền xử lý dữ liệu
 Kết quả sau khi chuyển cột education và self_employed thành các
giá trị số nguyên.

 Các giá trị cũ của cột education và self_employed được đại diện bởi
các giá trị số nguyên không làm ảnh hưởng đến ý nghĩa của dữ liệu
gốc ban đầu.

9
PHÂN LỚP DỮ LIỆU VỚI PYTHON
VÍ DỤ 1
Tiền xử lý dữ liệu
 Xóa cột loan_id vì dữ liệu tại cột loan_id không có ý nghĩa trong việc
quyết định cho vay.
 Xóa cột loan_id bằng lệnh sau:
data = [Link](['loan_id'],axis = 1)

 Tách riêng dữ liệu nhãn lớp để máy tính học chính xác và hiệu quả
bằng dòng lệnh sau:
#Tạo biến label để lưu riêng nhãn lớp (cột loan_status)
label = data['loan_status’]
#Xóa cột nhãn lớp (loan_status)trong bộ dữ liệu ban đầu
data = [Link](['loan_status'],axis = 1)
[Link](5) #Hiển thị kết quả

 Tạo một ô code với các đoạn code trên, chạy và xem kết quả.

10
PHÂN LỚP DỮ LIỆU VỚI PYTHON
VÍ DỤ 1
Tiền xử lý dữ liệu
 Chuẩn hóa dữ liệu cho các thuộc tính (cột dữ liệu) bằng chuẩn hóa
min-max với min là 0 và max là 1.
#Sử dụng thư viện sklearn với MinMaxScaler để chuẩn hóa min max
from [Link] import MinMaxScaler
# Khởi tạo MinMaxScaler, mặc định giá trị min là 0 và max là 1.
Nếu muốn thay đổi giá trị min, max thì chỉnh lại như sau:
MinMaxScaler(feature_range=(-1, 1)), trong -1 là min và 1 là
max
scaler = MinMaxScaler()
# Áp dụng MinMaxScaler cho tất cả các thuộc tính (cột dữ liệu)
scaled_data = [Link](scaler.fit_transform(data),
columns=[Link])
#Biến scaled_data chứa dữ liệu đã được chuẩn hóa
scaled_data.head(5)
 Tạo một ô code và chạy đoạn code trên để chuẩn hóa dữ liệu.

11
PHÂN LỚP DỮ LIỆU VỚI PYTHON
VÍ DỤ 1
Phân chia dữ liệu huấn luyện và đánh giá
 Sử dụng đoạn code sau để phân chia dữ liệu huấn luyện và đánh
giá:
#Sử dụng thư viện sklearn với chức năng train_test_split để
phân chia dữ liệu
from sklearn.model_selection import train_test_split
#X_train là dữ liệu huấn luyện, X_test là dữ liệu đánh giá
#y_train là nhãn lớp huấn luyện, y_test là nhãn lớp đánh giá
X_train, X_test, y_train, y_test =
train_test_split(scaled_data, label, test_size=0.2,
random_state=42)
Nếu random_state có giá trị giống
Tỷ lệ phân chia là 20% (0.2) đánh giá nhau thì cách phân chia dữ liệu sẽ
và 80% huấn luyện giống nhau cho các lần chạy để có thể
so sánh kết quả

 Tạo một ô code và chạy đoạn code trên để phân chia dữ liệu.

12
PHÂN LỚP DỮ LIỆU VỚI PYTHON
VÍ DỤ 1
Xây dựng bộ phân lớp bằng giải thuật k-NN
 Sử dụng đoạn code sau để khởi tạo và huấn luyện bộ phân lớp
bằng giải thuật k-NN:
#Sử dụng thư viện sklearn với KNeighborsClassifier để xây dựng
bộ phân lớp sử dụng k-NN
from [Link] import KNeighborsClassifier
#Sử dụng thư viện sklearn với accuracy_score để đánh giá độ
chính xác của mô hình
from [Link] import accuracy_score

#Khởi tạo bộ phân lớp bằng k-NN với k=3


knnClassifier = KNeighborsClassifier(n_neighbors=3)

#Huấn luyện bộ phân lớp bằng dữ liệu huấn luyện


[Link](X_train, y_train)
 Tạo một ô code và chạy đoạn code trên để xây dựng bộ phân lớp.

13
PHÂN LỚP DỮ LIỆU VỚI PYTHON
VÍ DỤ 1
Đánh giá bộ phân lớp
 Sử dụng đoạn code sau để đánh giá độ chính xác của bộ phân lớp
vừa xây dựng:
#Dự đoán nhãn lớp cho dữ liệu đánh giá
y_predict = [Link](X_test)

#Tính độ chính xác của bộ phân lớp


accuracy = accuracy_score( y_predict, y_test)

print("Độ chính xác là:"+str(accuracy))

 Bổ sung thêm đoạn code trên vào nội dung ô code xây dựng bộ phân
lớp và chạy để xem kết quả.

14
PHÂN LỚP DỮ LIỆU VỚI PYTHON
BÀI TẬP
Bài 1. Thực hiện lại các bước trong ví dụ 1.
Bài 2. Cho đoạn code sau:
import pandas as pd
# Sử thư viện sklearn với StandardScaler để chuẩn hóa z-score
from [Link] import StandardScaler
# Tạo dữ liệu mẫu và lưu vào biến df
df = [Link]({
'feature1': [10, 20, 30, 40, 50],
'feature2': [100, 200, 300, 400, 500]
})
print("Dữ liệu ban đầu:")
print(df)
# Khởi tạo StandardScaler
scaler = StandardScaler()
# Áp dụng StandardScaler cho tất cả các thuộc tính (cột dữ liệu)
scaled_df = [Link](scaler.fit_transform(df),
columns=[Link])

print("\n Dữ liệu sau khi chuẩn hóa Z-score:")


print(scaled_df)
Đoạn code trên ví dụ về cách chuẩn hóa dữ liệu bằng chuẩn hóa z-score. Điều
chỉnh lại phương pháp chuẩn hóa trong ví dụ 1 dựa vào đoạn code trên và chạy lại
các ô code. Nhận xét kết quả phân lớp sau khi thay đổi phương pháp chuẩn hóa
15
PHÂN LỚP DỮ LIỆU VỚI PYTHON
VÍ DỤ 2
 Sử dụng bộ dữ liệu trong ví dụ 1 và xây dựng bộ phân
lớp sử dụng Naïve Bayes và Cây quyết định.
 Các bước thực hiện gần như tương tự như ví dụ 1
nhưng cần điều chỉnh lại các đoạn code tại bước xây
dựng bộ phân lớp và đánh giá chất lượng bộ phân lớp.

16
PHÂN LỚP DỮ LIỆU VỚI PYTHON
VÍ DỤ 2
Chuẩn bị
Trên Google Drive, tạo một file mới bằng cách copy file
TH2_VD1.ipynb và đặt tên là TH2_VD2.ipynb

17
PHÂN LỚP DỮ LIỆU VỚI PYTHON
VÍ DỤ 2
Phân lớp dữ liệu bằng Naïve Bayes
Tại file TH2_VD2.ipynb, điều chỉnh lại các đoạn code xây dựng bộ
phân lớp và đánh giá chất lượng bộ phân lớp như sau:
#Sử dụng thư viện sklearn với GaussianNB để xây dựng bộ phân lớp
bằng Naive Bayes
from sklearn.naive_bayes import GaussianNB
#Sử dụng thư viện sklearn với accuracy_score để đánh giá độ chính
xác của mô hình
from [Link] import accuracy_score
# Khởi tạo mô hình Gaussian Naive Bayes
NBClassifier = GaussianNB()
# Huấn luyện bộ phân lớp
[Link](X_train, y_train)
# Dự đoán nhãn lớp cho dữ liệu đánh giá
y_predict = [Link](X_test)
# Tính độ chính xác của bộ phân lớp
accuracy = accuracy_score(y_test, y_predict)

print("Độ chính xác là:"+str(accuracy))

Chạy lại các ô code trong file TH2_VD2.ipynb và xem kết quả 18
PHÂN LỚP DỮ LIỆU VỚI PYTHON
VÍ DỤ 2
Phân lớp dữ liệu bằng Cây quyết định
Tại file TH2_VD2.ipynb, thêm một ô code tại vị trí cuối với nội dung
như sau:
# Sử dụng thư viện sklearn với DecisionTreeClassifier
from [Link] import DecisionTreeClassifier

# Khởi tạo bộ phân lớp bằng cây quyết định


tree_clf = DecisionTreeClassifier(criterion='entropy')

#Huấn luyện bộ phân lớp


tree_clf.fit(X_train, y_train)

# Dự đoán nhãn lớp cho dữ liệu đánh giá


y_predict = tree_clf.predict(X_test)

# Tính độ chính xác của bộ phân lớp


accuracy = accuracy_score(y_test, y_predict)

print("Độ chính xác là:"+str(accuracy))

Chạy ô code trên và xem kết quả 19


PHÂN LỚP DỮ LIỆU VỚI PYTHON
BÀI TẬP
Bài 3. Thực hiện lại các bước trong ví dụ 2.
Bài 4. Sử dụng dữ liệu chưa chuẩn hóa để xây dựng bộ phân lớp cho ví
dụ 1 và ví dụ 2.
Để sử dụng dữ liệu chưa chuẩn hóa điều chỉnh lại đoạn code sau:
X_train, X_test, y_train, y_test = train_test_split(data, label,
test_size=0.2, random_state=42)

Chỉnh scaled_data  data, data là dữ liệu chưa chuẩn hóa;


scaled_data là dữ liệu được chuẩn hóa từ data

So sánh kết quả với bộ phân lớp sử dụng dữ liệu đã chuẩn hóa.

20
PHÂN LỚP DỮ LIỆU VỚI PYTHON
BÀI TẬP
Bài 5.
Cho file dữ liệu [Link] được thu thập bởi National Institute of Diabetes and
Digestive and Kidney Diseases với mục đích dự đoán khả năng mắc bệnh tiểu đường của
các bệnh nhân dựa trên các thông tin liên quan đến bệnh nhân, các bệnh nhân đều là nữ và
từ 21 tuổi trở lên.
Bộ dữ liệu gồm các thuộc tính (cột) sau:
• Pregnancies: Số lần mang thai
• Glucose: Kết quả kiểm tra glucose
• BloodPressure: Huyết áp
• SkinThickness: Độ dày nếp gấp da tại vùng phía sau bắp tay (triceps)
• Insulin: Kết quả kiểm tra insulin
• BMI: Chỉ số BMI
• DiabetesPedigreeFunction: Tiền sử mắc bệnh tiểu đường của các thành viên gia đình.
• Age: Tuổi
• Outcome: 0: Không mắc bệnh tiểu đường; 1: Mắc bệnh tiểu đường
Sử dụng bộ dữ liệu trên và xây dựng bộ phân lớp sử dụng các giải thuật k-NN, Naïve Bayes,
cây quyết định để xác định khả năng mắc bệnh tiểu đường của các bệnh nhân?
21

You might also like