Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 7

Họ tên Nội dung thực hiện Điểm Chữ ký

Tạ Văn Thành Hưng


(21810310022)
Phạm Vương Đăng
(21810310060)
Vũ Minh Hiếu
(21810310063)

Bước 1: Phân chia dữ liệu thành tập huấn luyện và tập kiểm tra
Đầu tiên, chúng ta cần tải dữ liệu từ tệp CSV cho cả rượu đỏ và rượu trắng. Sau đó, chúng ta
sẽ thực hiện phân chia dữ liệu thành tập huấn luyện và tập kiểm tra.
Sau đó, chúng ta sẽ thực hiện phân chia dữ liệu thành tập huấn luyện và tập kiểm tra.
Code python:
import pandas as pd
from sklearn.model_selection import train_test_split

# Đọc dữ liệu từ các tệp CSV


red_wine_data = pd.read_csv("winequality-red.csv", sep=';')
white_wine_data = pd.read_csv("winequality-white.csv", sep=';')

# Phân chia dữ liệu thành tập huấn luyện và tập kiểm tra cho rượu đỏ
red_train_data, red_test_data = train_test_split(red_wine_data, test_size=0.1,
random_state=42)

# Phân chia dữ liệu thành tập huấn luyện và tập kiểm tra cho rượu trắng
white_train_data, white_test_data = train_test_split(white_wine_data, test_size=0.1,
random_state=42)

# Lưu các tập dữ liệu thành các tệp CSV


red_train_data.to_csv("red_train_data.csv", index=False)
red_test_data.to_csv("red_test_data.csv", index=False)
white_train_data.to_csv("white_train_data.csv", index=False)
white_test_data.to_csv("white_test_data.csv", index=False)
Trong đoạn mã trên:
Chúng ta sử dụng hàm pd.read_csv để đọc dữ liệu từ các tệp CSV vào các DataFrame của
pandas.
Sau đó, chúng ta sử dụng hàm train_test_split từ thư viện sklearn.model_selection để phân
chia dữ liệu thành tập huấn luyện và tập kiểm tra. Tham số test_size=0.1 xác định tỷ lệ dữ liệu
được sử dụng cho tập kiểm tra là 10%, và random_state=42 đảm bảo rằng chúng ta sẽ có kết
quả phân chia dữ liệu như nhau mỗi khi chạy lại mã.
Bước 2: Sử dụng mô hình k-means
Trước tiên, chúng ta sẽ huấn luyện mô hình k-means trên tập huấn luyện. Sau đó, chúng ta sẽ
đánh giá hiệu suất của mô hình trên tập kiểm tra.
Chúng ta sẽ lặp lại quy trình này và tính toán các chỉ số đánh giá như độ chính xác, tỷ lệ dương
tính thực, tỷ lệ dương tính giả, tỷ lệ âm tính giả và độ chính xác cho mỗi lần lặp lại.
Hãy tiếp tục với việc thực hiện mô hình k-means trên tập huấn luyện và đánh giá hiệu suất của
nó trên tập kiểm tra.
Trước tiên, chúng ta cần import các thư viện cần thiết và định nghĩa hàm để huấn luyện và
đánh giá mô hình k-means. Sau đó, chúng ta sẽ thực hiện lặp lại quy trình này và tính toán các
chỉ số đánh giá.
Code python:
from sklearn.cluster import KMeans
from sklearn.metrics import confusion_matrix, accuracy_score

def train_kmeans(train_data, test_data, k):


# Tạo mô hình k-means với số cụm k
kmeans = KMeans(n_clusters=k, random_state=42)

# Huấn luyện mô hình trên tập huấn luyện


kmeans.fit(train_data.drop(columns=['quality']))

# Dự đoán nhãn cho tập kiểm tra


test_labels = kmeans.predict(test_data.drop(columns=['quality']))

# Tính toán độ chính xác và ma trận nhầm lẫn


accuracy = accuracy_score(test_data['quality'], test_labels)
confusion = confusion_matrix(test_data['quality'], test_labels)

return accuracy, confusion

# Số lượng cụm k
k=7
# Huấn luyện và đánh giá mô hình k-means cho rượu đỏ
red_accuracy, red_confusion = train_kmeans(red_train_data, red_test_data, k)

# Huấn luyện và đánh giá mô hình k-means cho rượu trắng


white_accuracy, white_confusion = train_kmeans(white_train_data, white_test_data, k)

# In ra kết quả
print("Red Wine - K-Means Accuracy:", red_accuracy)
print("Red Wine - Confusion Matrix:\n", red_confusion)
print("\nWhite Wine - K-Means Accuracy:", white_accuracy)
print("White Wine - Confusion Matrix:\n", white_confusion)
Trong đoạn mã trên:
Chúng ta định nghĩa hàm train_kmeans để huấn luyện mô hình k-means và đánh giá hiệu suất
của nó.
Sau đó, chúng ta thực hiện huấn luyện và đánh giá mô hình k-means cho cả dữ liệu rượu đỏ và
rượu trắng.
Kết quả được in ra bao gồm độ chính xác và ma trận nhầm lẫn của mô hình trên cả hai loại
rượu.
Bước 3: Tạo mô hình hồi quy và đánh giá hiệu suất
Trong bước này, chúng ta sẽ huấn luyện một mô hình hồi quy tuyến tính trên tập huấn luyện và
đánh giá hiệu suất của nó trên tập kiểm tra. Chúng ta sẽ lặp lại quy trình này và tính toán các
chỉ số đánh giá giống như đã làm trong Bước 2.
Hãy tiếp tục với việc thực hiện mô hình hồi quy tuyến tính và đánh giá hiệu suất của nó trên tập
kiểm tra.
Trước tiên, chúng ta cần import các thư viện cần thiết và định nghĩa hàm để huấn luyện và
đánh giá mô hình hồi quy tuyến tính. Sau đó, chúng ta sẽ thực hiện lặp lại quy trình này và tính
toán các chỉ số đánh giá.
from sklearn.linear_model import LinearRegression

def train_linear_regression(train_data, test_data):


# Khởi tạo và huấn luyện mô hình hồi quy tuyến tính
model = LinearRegression()
model.fit(train_data.drop(columns=['quality']), train_data['quality'])

# Dự đoán chất lượng trên tập kiểm tra


predictions = model.predict(test_data.drop(columns=['quality']))
# Chuyển đổi dự đoán thành nhãn chất lượng (làm tròn)
rounded_predictions = [round(pred) for pred in predictions]

# Tính toán độ chính xác và ma trận nhầm lẫn


accuracy = accuracy_score(test_data['quality'], rounded_predictions)
confusion = confusion_matrix(test_data['quality'], rounded_predictions)

return accuracy, confusion

# Huấn luyện và đánh giá mô hình hồi quy tuyến tính cho rượu đỏ
red_accuracy, red_confusion = train_linear_regression(red_train_data, red_test_data)

# Huấn luyện và đánh giá mô hình hồi quy tuyến tính cho rượu trắng
white_accuracy, white_confusion = train_linear_regression(white_train_data, white_test_data)

# In ra kết quả
print("Red Wine - Linear Regression Accuracy:", red_accuracy)
print("Red Wine - Confusion Matrix:\n", red_confusion)
print("\nWhite Wine - Linear Regression Accuracy:", white_accuracy)
print("White Wine - Confusion Matrix:\n", white_confusion)
Trong đoạn mã trên:
Chúng ta định nghĩa hàm train_linear_regression để huấn luyện mô hình hồi quy tuyến tính và
đánh giá hiệu suất của nó.
Sau đó, chúng ta thực hiện huấn luyện và đánh giá mô hình hồi quy tuyến tính cho cả dữ liệu
rượu đỏ và rượu trắng.
Kết quả được in ra bao gồm độ chính xác và ma trận nhầm lẫn của mô hình trên cả hai loại
rượu.
Bước 4: Trực quan hóa kết quả
Chúng ta có thể sử dụng các biểu đồ và đồ thị để trực quan hóa kết quả từ cả hai mô hình k-
means và hồi quy tuyến tính. Các biểu đồ này có thể bao gồm biểu đồ phân tán để so sánh
giữa nhãn dự đoán và nhãn thực tế, biểu đồ cột để hiển thị tỷ lệ dự đoán chính xác của mỗi
nhóm chất lượng rượu, và các biểu đồ khác để thể hiện các biến quan trọng đối với chất lượng
rượu.
Hãy tiếp tục với việc trực quan hóa kết quả từ cả hai mô hình.
Để trực quan hóa kết quả từ cả hai mô hình, chúng ta có thể sử dụng các biểu đồ phù hợp như
biểu đồ phân tán và biểu đồ cột. Dưới đây là một ví dụ về cách trực quan hóa dữ liệu:
import matplotlib.pyplot as plt
# Hàm để vẽ biểu đồ phân tán và biểu đồ cột
def plot_results(true_labels, predicted_labels, model_name):
# Vẽ biểu đồ phân tán
plt.figure(figsize=(10, 5))
plt.scatter(range(len(true_labels)), true_labels, color='blue', label='True Labels', alpha=0.5)
plt.scatter(range(len(predicted_labels)), predicted_labels, color='red', label='Predicted
Labels', alpha=0.5)
plt.title(f"{model_name} - Scatter Plot")
plt.xlabel("Sample Index")
plt.ylabel("Quality")
plt.legend()
plt.show()

# Vẽ biểu đồ cột
plt.figure(figsize=(8, 5))
plt.hist([true_labels, predicted_labels], color=['blue', 'red'], label=['True Labels', 'Predicted
Labels'], alpha=0.7)
plt.title(f"{model_name} - Histogram")
plt.xlabel("Quality")
plt.ylabel("Frequency")
plt.legend()
plt.show()

# Trực quan hóa kết quả cho mô hình k-means trên dữ liệu rượu đỏ
plot_results(red_test_data['quality'], red_test_labels, "K-Means (Red Wine)")

# Trực quan hóa kết quả cho mô hình hồi quy tuyến tính trên dữ liệu rượu đỏ
plot_results(red_test_data['quality'], red_linear_predictions, "Linear Regression (Red Wine)")
Trong đoạn mã trên:

Chúng ta định nghĩa hàm plot_results để vẽ biểu đồ phân tán và biểu đồ cột của kết quả dự
đoán.
Sau đó, chúng ta sử dụng hàm này để trực quan hóa kết quả từ cả hai mô hình: mô hình k-
means và mô hình hồi quy tuyến tính trên dữ liệu rượu đỏ.
Bạn có thể áp dụng cùng phương pháp cho dữ liệu rượu trắng và thực hiện so sánh kết quả
giữa hai loại rượu.
Kết quả:

You might also like