Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Ứng dụng mô hình dự đoán bệnh tiểu đường từ dữ liệu y tế
Hướng Dẫn Đồ ÁnLập Trình AI

Ứng dụng mô hình dự đoán bệnh tiểu đường từ dữ liệu y tế

Chia sẻ
Chia sẻ

Dự đoán bệnh tiểu đường là một trong những ứng dụng nổi bật của trí tuệ nhân tạo trong lĩnh vực y tế. Nhờ vào mô hình học máy, các hệ thống hỗ trợ bác sĩ có thể đưa ra cảnh báo sớm, từ đó giúp bệnh nhân điều chỉnh lối sống, phát hiện sớm nguy cơ và cải thiện hiệu quả điều trị.

Bài viết này hướng dẫn bạn xây dựng mô hình dự đoán bệnh tiểu đường bằng Python dựa trên bộ dữ liệu thực tế Pima Indian Diabetes Dataset. Đây là một ví dụ kinh điển trong lĩnh vực y học và thường được sử dụng để huấn luyện mô hình phân loại.

Nếu bạn từng xem qua bài Giải thích confusion matrix dễ hiểu nhất hoặc đã áp dụng phân tích cảm xúc bằng Python, thì việc xây dựng mô hình y tế sẽ là bước tiến tiếp theo đầy thú vị.

Giới thiệu bộ dữ liệu Pima Indian Diabetes Dataset

Bộ dữ liệu này chứa thông tin y tế của 768 phụ nữ gốc Pima (Mỹ) với các thuộc tính như:

  • Số lần mang thai
  • Mức glucose trong máu
  • Huyết áp
  • Chỉ số BMI
  • Tuổi
  • Kết quả: mắc tiểu đường hay không (0 hoặc 1)

Bạn có thể tải dữ liệu từ link dưới đây:
https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv

Nạp và tiền xử lý dữ liệu

Bước đầu tiên trong việc xây dựng mô hình là đọc dữ liệu vào Python và làm sạch các giá trị bất thường. Việc tiền xử lý dữ liệu không chỉ giúp mô hình hoạt động chính xác hơn mà còn tránh được sai lệch trong việc huấn luyện.

Chúng ta sẽ sử dụng thư viện pandas để đọc dữ liệu từ tệp CSV, đồng thời đặt tên các cột để dễ làm việc. Sau đó, kiểm tra một vài dòng đầu tiên để đảm bảo dữ liệu đã được nạp đúng định dạng.

import pandas as pd
import numpy as np

# Tải dữ liệu về và đọc vào DataFrame
url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv'
columns = ['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin',
           'BMI', 'DiabetesPedigreeFunction', 'Age', 'Outcome']
df = pd.read_csv(url, names=columns)

# Kiểm tra 5 dòng đầu
print(df.head())

Xử lý dữ liệu thiếu và chia tập huấn luyện

Sau khi đọc dữ liệu, bạn sẽ thấy một số cột có giá trị bằng 0 – điều này không thực tế với dữ liệu y tế (ví dụ glucose hoặc BMI không thể là 0). Những giá trị này cần được xử lý để tránh ảnh hưởng đến mô hình.

Chúng ta sẽ thay thế các giá trị bằng 0 trong các cột quan trọng bằng trung vị (median) của từng cột, sau đó chia dữ liệu thành tập huấn luyện và kiểm tra để phục vụ cho mô hình học máy.

cols_with_zero = ['Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI']
for col in cols_with_zero:
    df[col] = df[col].replace(0, np.nan)
    df[col].fillna(df[col].median(), inplace=True)

# Tách tập train/test
from sklearn.model_selection import train_test_split
X = df.drop('Outcome', axis=1)
y = df['Outcome']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Xây dựng mô hình học máy (Logistic Regression)

Bây giờ, chúng ta sẽ xây dựng mô hình học máy để dự đoán khả năng mắc bệnh tiểu đường. Một trong những mô hình cơ bản nhưng hiệu quả là Logistic Regression.

Chúng ta sử dụng mô hình này vì tính đơn giản, dễ hiểu và phù hợp với bài toán phân loại nhị phân như: mắc bệnh (1) hoặc không mắc bệnh (0).

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report

model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

print("Accuracy:", accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))

Vẽ confusion matrix để đánh giá

Việc chỉ nhìn vào độ chính xác chưa đủ để đánh giá mô hình y tế. Ta cần xem mô hình đã dự đoán đúng bao nhiêu ca bệnh và bỏ sót bao nhiêu – điều này thể hiện rõ qua ma trận nhầm lẫn (confusion matrix).

Chúng ta sẽ vẽ confusion matrix bằng thư viện sklearn, giúp trực quan hóa hiệu suất mô hình một cách chi tiết.

from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay

cm = confusion_matrix(y_test, y_pred)
disp = ConfusionMatrixDisplay(confusion_matrix=cm)
disp.plot()

Kết luận

Mô hình dự đoán tiểu đường là một ví dụ điển hình trong y học số, giúp phát hiện sớm và cảnh báo bệnh tiềm ẩn. Việc áp dụng các thuật toán học máy đơn giản như Logistic Regression cũng đã đem lại kết quả đáng khích lệ với độ chính xác tương đối cao.

Từ đây, bạn có thể nâng cấp mô hình bằng các phương pháp nâng cao như Random Forest, XGBoost hoặc sử dụng thuật toán tối ưu đặc biệt cho dữ liệu y tế. Bạn cũng có thể triển khai mô hình thành REST API để phục vụ kiểm tra lâm sàng tự động hoặc kết nối với phần mềm y tế chuyên dụng.

Nếu bạn muốn tiếp tục với phần xây dựng giao diện phân tích y tế, hoặc so sánh các mô hình học sâu trên dữ liệu bệnh lý, mình có thể viết tiếp hướng dẫn chi tiết hơn.

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!