Tại đây Guido van Rossum có cơ hội được tiếp xúc với ngôn ngữ lậptrình ABC, trong quá trình làm việc ông đã nhận thấy ABC có rất nhiều vấn đề, tuy nhiên ông vẫn ưa chuộng những tính năng
GIỚI THIỆU VỀ NGÔN NGỮ PYTHON
Python là gì?
Python là một ngôn ngữ lập trình tuyệt vời, nổi bật với tính dễ học và cú pháp đơn giản, phù hợp cho người mới bắt đầu Tuy nhiên, Python không chỉ là một công cụ học tập; nhiều ứng dụng và sản phẩm nổi tiếng từ các công ty lớn như Google, Mozilla, Cisco, Microsoft và Instagram đều được phát triển bằng Python.
Python là một ngôn ngữ lập trình bậc cao, đa năng, được Guido van Rossum phát triển và ra mắt lần đầu vào năm 1991 Với thiết kế dễ đọc, dễ học và dễ nhớ, Python nổi bật với cấu trúc rõ ràng, phù hợp cho người mới bắt đầu lập trình Ngôn ngữ này rất phổ biến trong phát triển trí tuệ nhân tạo (AI) và cho phép người dùng viết mã với số lần gõ phím tối thiểu Vào tháng 7 năm 2018, Van Rossum đã từ chức lãnh đạo cộng đồng Python sau 30 năm cống hiến.
Lịch sử phát triển ngôn ngữ lập trình Python
Python là một ngôn ngữ lập trình cấp cao, đa mục đích, phổ biến trong nhiều lĩnh vực Được sáng lập bởi Guido van Rossum vào năm 1991, Python hiện nay được duy trì và phát triển bởi tổ chức Python Software Foundation.
Guido Van Rossum bắt đầu nghiên cứu các sản phẩm ứng dụng vào tháng 12 năm 1989 tại Centrum Wiskunde & Informatica (CWI) Tại đây, ông được tiếp xúc với ngôn ngữ lập trình ABC, và mặc dù nhận thấy nhiều vấn đề của ABC, ông vẫn đánh giá cao những tính năng mà ngôn ngữ này cung cấp.
Ông đã sáng tạo ra một ngôn ngữ lập trình mới bằng cách kết hợp cú pháp của ngôn ngữ ABC cùng với các tính năng độc đáo Tên gọi "Python" được lấy cảm hứng từ chương trình truyền hình BBC mà ông yêu thích, Monty Python's Flying Circus Với mong muốn tạo ra một cái tên ngắn gọn, độc đáo và bí ẩn, Guido đã quyết định đặt tên cho phát minh của mình là Python.
Năm 2020, Python đã có phiên bản 3.9 Bạn có thể đọc thêm tại trang web phát hành chính thức của Python tại http://python.org/.
Các đặc trưng của ngôn ngữ lập trình Python
Python là một ngôn ngữ lập trình cấp cao nổi bật với tính phổ biến rộng rãi Với lịch sử phát triển lâu dài, Python đã trở thành một trong những ngôn ngữ được ưa chuộng nhất trong cộng đồng lập trình viên.
Python đã có sự phát triển nhanh chóng trong những năm gần đây, được xếp hạng thứ 7 trong các ngôn ngữ lập trình phổ biến nhất và đứng đầu trong danh sách công nghệ ưa thích theo khảo sát của Stack Overflow năm 2018 Nhiều công ty phần mềm hàng đầu thế giới hiện đang sử dụng Python cho các dự án của họ hàng ngày.
Theo báo cáo của Dice, Python hiện đang được coi là ngôn ngữ lập trình thiết yếu mà mọi lập trình viên nên nắm vững Nó cũng đứng đầu trong bảng xếp hạng Popularity of Programming Language Index, khẳng định vị thế phổ biến của mình trong cộng đồng lập trình.
Hình 1.1 Bảng xếp hạng mức độ phổ biến của các ngôn ngữ lập trình theo Popularity of Programming Language Index
Python là một trong những ngôn ngữ lập trình được ưa chuộng nhất hiện nay nhờ vào tính phổ biến và ứng dụng đa dạng của nó Điều này dẫn đến nhu cầu tuyển dụng cao và mức lương hấp dẫn cho các lập trình viên Python Hơn nữa, ngôn ngữ này cũng rất dễ học, phù hợp cho cả những người mới bắt đầu.
Khi so sánh Python với các ngôn ngữ lập trình cấp cao như C++, C#, Javascript, và Java, Python được đánh giá là dễ học hơn nhờ vào cú pháp đơn giản và gần gũi với ngôn ngữ giao tiếp hàng ngày Điều này đã dẫn đến việc nhiều trường học trên thế giới đưa Python vào giảng dạy từ bậc Tiểu học đến Trung học, giúp học sinh dễ dàng tiếp thu kiến thức và khơi dậy niềm đam mê lập trình.
IDE PyCharm có hỗ trợ phiên bản Education
Python không chỉ dành cho học sinh và trẻ nhỏ; với tính đơn giản và dễ học, nhiều người từ các ngành nghề khác cũng có thể bắt đầu học Python như một bước đệm để khám phá lĩnh vực Công Nghệ Thông Tin Hơn nữa, Python hoàn toàn miễn phí và mã nguồn mở, giúp người dùng dễ dàng tiếp cận và sử dụng.
Trình thông dịch Python được phát triển dưới giấy phép mã nguồn mở, cho phép người dùng tải và cài đặt miễn phí, bao gồm cả việc sử dụng cho các mục đích thương mại.
Chính sách mã nguồn mở của Python đã thu hút nhiều lập trình viên tham gia đóng góp, góp phần làm cho ngôn ngữ này ngày càng hoàn thiện Python cũng nổi bật với tính năng hướng đối tượng, giúp lập trình viên dễ dàng xây dựng và quản lý các ứng dụng phức tạp.
Lập trình hướng đối tượng là một đặc trưng quan trọng của ngôn ngữ Python và các ngôn ngữ bậc cao hiện nay, cho phép mô tả bài toán thông qua sự tương tác giữa các đối tượng Những đặc điểm nổi bật của ngôn ngữ hướng đối tượng bao gồm tính trừu tượng hóa, tính đóng gói, tính kế thừa và tính đa hình Ngoài ra, ngôn ngữ này còn hỗ trợ lập trình giao diện người dùng, giúp phát triển ứng dụng một cách hiệu quả và trực quan.
Ngôn ngữ lập trình Python cung cấp nhiều module hỗ trợ tạo giao diện người dùng hấp dẫn và trực quan, bao gồm PyQt5, PyQt4 và Tkinter.
Hầu hết các ngôn ngữ lập trình đều sử dụng trình biên dịch để chuyển đổi mã nguồn thành mã máy trước khi thực thi Tuy nhiên, ngôn ngữ thông dịch cho phép chạy chương trình trực tiếp mà không cần biên dịch, giúp quá trình phát triển trở nên nhanh chóng và thuận tiện hơn, vì lập trình viên chỉ cần viết mã và chạy ngay lập tức.
Một trong những nhược điểm lớn nhất của ngôn ngữ thông dịch là thời gian thực thi chậm hơn so với các ngôn ngữ biên dịch Các chương trình được biên dịch sang ngôn ngữ máy thường chạy nhanh hơn, điều này có thể gây hạn chế cho những ứng dụng yêu cầu tính toán cao như xử lý đồ họa và xử lý số liệu.
Trong thực tế, sự khác biệt về tốc độ thực thi giữa các chương trình thường chỉ nằm trong khoảng mili giây đến giây, điều này không gây ảnh hưởng đáng kể đến người dùng Do đó, hiệu quả của việc viết code bằng ngôn ngữ thông dịch thường được đánh giá cao cho hầu hết các ứng dụng, đồng thời cũng mang lại khả năng mở rộng dễ dàng.
Python có tính năng mở rộng cho phép viết mã nguồn trong ngôn ngữ khác và sử dụng trình biên dịch hoặc thông dịch để thực thi chương trình, ví dụ như biên dịch mã Python trong C/C++ Một đặc điểm nổi bật của Python là không yêu cầu định nghĩa kiểu dữ liệu khi khai báo biến, khác với các ngôn ngữ như C, C++ hay Java, cho phép biến có thể chứa các đối tượng với kiểu dữ liệu khác nhau.
Các lĩnh vực sử dụng ngôn ngữ lập trình Python
Python là ngôn ngữ lập trình được ưa chuộng nhờ vào các đặc trưng nổi bật, giúp nó trở thành lựa chọn phổ biến trong cộng đồng lập trình Với hàng ngàn thư viện hỗ trợ có sẵn tại Python Package Index, Python đáp ứng nhiều mục tiêu phát triển khác nhau Một trong những ứng dụng quan trọng của Python là trong lĩnh vực phát triển web và internet.
Python cung cấp cho người dùng chúng ta rất nhiều công cụ phục vụ cho việc phát triển web, điển hình có thể kể đến như:
Frameworks nổi bật như Django và Pyramid.
Các thư viện như Flask và Bottle.
Các hệ thống quản trị nội dung như Plone và django CMS. b) Games và Đồ Họa 3D (Games and 3D Graphics)
Python là ngôn ngữ lập trình phổ biến trong phát triển trò chơi, với nhiều thư viện hữu ích như PySoy, một engine trò chơi 3D hỗ trợ Python 3, và PyGame, cung cấp các chức năng cần thiết để phát triển trò chơi Nhiều trò chơi nổi tiếng như Civilization IV, Disney’s Toontown Online và Vega Strike đã được xây dựng bằng Python.
Hình 1.2 Game rắn săn mồi rất đỗi quen thuộc với chúng ta được viết bằng PyGame c) Phục vụ cho khoa học và tính toán (Scientific and numeric)
Việc áp dụng các thuật toán học máy đòi hỏi kiến thức về toán học phức tạp, nhưng Python đã hỗ trợ chúng ta bằng nhiều thư viện hữu ích cho khoa học và dữ liệu như Numpy, Pandas, Scipy và Scikit-learn Dưới đây là một số thư viện phổ biến trong lĩnh vực học máy.
Thư viện Numpy d) Ứng dụng giao diện người dùng (Desktop GUIs)
Python là một ngôn ngữ lập trình mạnh mẽ, cho phép phát triển các ứng dụng giao diện người dùng thông qua thư viện Tkinter Bên cạnh đó, các thư viện khác như wxWidgets, Kivy và PYQT cũng rất hữu ích trong việc tạo ra các ứng dụng giao diện Đặc biệt, Python còn được ứng dụng rộng rãi trong lĩnh vực trí tuệ nhân tạo (AI).
Triển khai các dự án AI liên quan đến nhiều thuật toán có thể tốn thời gian và công sức Để tối ưu hóa quy trình, chúng ta không cần phải viết lại các thuật toán, và Python cung cấp cho chúng ta nhiều công cụ hữu ích để đơn giản hóa công việc này.
100 thư viện được xây dựng sẵn để thực hiện các thuật toán khác nhau.
Khi bạn muốn chạy một thuật toán trên một tập dữ liệu, bạn chỉ cần cài đặt và tải các thư viện cần thiết bằng một lệnh duy nhất Một số thư viện nổi bật trong lĩnh vực này bao gồm NumPy, Keras, TensorFlow và PyTorch.
Hình 1.4 Object Detection sử dụng YOLOv3
Một số tính chất của Python
Interpreted: nhờ chức năng thông dịch mà trình thông dịch
Interpreter của Python cho phép xử lý lệnh ngay tại thời điểm chạy chương trình, giúp loại bỏ bước biên dịch trước khi thực hiện, tương tự như các ngôn ngữ Perl và PHP.
Python có tính năng tương tác mạnh mẽ, cho phép người dùng thực hiện lệnh trực tiếp tại dấu nhắc lệnh của trình thông dịch Điều này giúp người dùng tương tác ngay lập tức với mã nguồn và kiểm tra kết quả một cách nhanh chóng.
Object-Oriented: Python hỗ trợ mạnh cho phong cách lập trình hướng đối tượng và kỹ thuật lập trình gói mã trong đối tượng.
Python là ngôn ngữ lập trình lý tưởng cho người mới bắt đầu, nhưng cũng rất mạnh mẽ trong việc phát triển đa dạng ứng dụng, bao gồm từ chương trình xử lý văn bản đơn giản, ứng dụng web cho đến trò chơi điện tử.
KHẢO SÁT VÀ PHÂN TÍCH BÀI TOÁN
Đặt vấn đề
Việc phân loại thuốc là một thách thức quan trọng đối với các nhà nghiên cứu và chuyên gia y học, ảnh hưởng lớn đến hiệu suất và an toàn trong điều trị bệnh Sự phát triển nhanh chóng của công nghệ và khả năng tính toán đã khiến các thuật toán máy học và học sâu trở thành công cụ thiết yếu trong quá trình phân loại thuốc.
Mục tiêu của việc áp dụng thuật toán máy học và học sâu trong phân loại thuốc là tối ưu hóa quy trình này bằng cách tự động hóa và nâng cao độ chính xác của kết quả Các thuật toán như SVM, Random Forest, Decision Trees, Neural Networks và kỹ thuật học sâu như CNN đã được sử dụng để xử lý dữ liệu lớn và phức tạp từ các nghiên cứu y học.
Mặc dù đã đạt được nhiều tiến bộ trong lĩnh vực này, nhưng vẫn còn nhiều thách thức cần giải quyết Các thuật toán phải xử lý sự đa dạng phong phú của dữ liệu thuốc, bao gồm thông tin hóa học, dữ liệu lâm sàng và các yếu tố khác Hơn nữa, độ chính xác và khả năng diễn giải của các mô hình cũng là những yếu tố quan trọng cần được chú trọng.
Việc đánh giá và so sánh hiệu suất của các thuật toán phân loại thuốc giúp chúng ta hiểu rõ hơn về ứng dụng của từng mô hình trong y học Điều này không chỉ tối ưu hóa điều trị bệnh tật mà còn thúc đẩy sự phát triển của các phương pháp phân loại tiên tiến và đáng tin cậy trong lĩnh vực y học và dược học.
Phương pháp nghiên cứu
Python với sử dụng các thư viện như scikit-learn, TensorFlow vàKeras.
Nội dung thực hiện
Nội dung thực hiện đề tài:
Thu thập dữ liệu: Sử dụng các nguồn dữ liệu y học uy tín để xây dựng tập dữ liệu đa dạng và phrepresentative cho các loại thuốc.
Tiền xử lý dữ liệu: Chuẩn hóa, xử lý dữ liệu thiếu và tách tập dữ liệu thành tập huấn luyện và tập kiểm tra.
Triển khai mô hình: Xây dựng và huấn luyện các mô hình sử dụng các thuật toán đã chọn.
Xác định các yêu cầu của phần mềm
2.4.1 Yêu cầu chức năng a) Thu thập dữ liệu:
Hệ thống phải có khả năng kết nối và nhập dữ liệu từ nhiều nguồn khác nhau, bao gồm cơ sở dữ liệu y học, bảng dữ liệu hóa học và dữ liệu lâm sàng từ các hệ thống thông tin y tế (HIS).
Hỗ trợ các định dạng dữ liệu phổ biến như CSV, Excel, và database connection. b) Tiền xử lý dữ liệu:
Tự động hóa quy trình tiền xử lý dữ liệu bao gồm việc chuẩn hóa giá trị và xử lý dữ liệu thiếu Các phương pháp thường được áp dụng là điền giá trị trung bình hoặc sử dụng các mô hình dự đoán để cải thiện chất lượng dữ liệu.
Tách tập dữ liệu thành tập huấn luyện và tập kiểm tra theo tỷ lệ xác định. c) Lựa chọn thuật toán:
Người dùng có khả năng lựa chọn giữa các thuật toán máy học và học sâu.
Cung cấp thông tin mô tả và ưu/nhược điểm của từng thuật toán để người dùng có thể đưa ra quyết định thông tin. d) Xây dựng mô hình:
Giao diện đơn giản cho phép người dùng lựa chọn các tham số huấn luyện và theo dõi tiến trình huấn luyện.
Báo cáo về hiệu suất mô hình trên tập huấn luyện. e) Đánh giá mô hình:
Thực hiện đánh giá trên tập kiểm tra với các thước đo như độ chính xác, độ nhạy, và độ đặc hiệu.
Hiển thị ma trận nhầm lẫn và đồ thị ROC để hỗ trợ đánh giá mô hình. f) Hiển thị kết quả:
Cung cấp giao diện thân thiện với người dùng để hiển thị kết quả phân loại cho từng loại thuốc.
Cho phép người dùng xem các đặc trưng quan trọng của mô hình.
2.3.2 Yêu cầu phi chức năng a) Hiệu suất
Yêu cầu ứng dụng có tốc độ xử lý nhanh để đáp ứng nhanh chóng với yêu cầu nhập liệu và đưa ra dự đoán.
Cung cấp khả năng mở rộng hệ thống để xử lý lượng dữ liệu lớn và đồng thời nhiều người dùng. b) Thích Nghi và Tương Thích
Đảm bảo giao diện người dùng hoạt động hiệu quả và hiển thị tốt trên nhiều thiết bị khác nhau, bao gồm điện thoại di động và máy tính bảng, là yếu tố quan trọng trong thiết kế web hiện đại.
Hỗ trợ một loạt các trình duyệt web phổ biến để đảm bảo tính tương thích. c) Bảo Mật và Quản Lý Quyền
Đảm bảo rằng thông tin bệnh nhân và dữ liệu y tế được bảo vệ một cách an toàn.
Xác định và thiết lập các cấp độ quyền truy cập cho người dùng khác nhau là rất quan trọng, đặc biệt đối với các nhóm nhân viên y tế và bác sĩ Điều này không chỉ đảm bảo tính bảo mật mà còn nâng cao độ tin cậy trong việc quản lý thông tin y tế.
Cung cấp dịch vụ hỗ trợ để giúp người dùng giải đáp thắc mắc hoặc báo cáo vấn đề.
Tích hợp các biện pháp dự phòng và khôi phục để đảm bảo tính sẵn sàng của hệ thống.
ỨNG DỤNG THUẬT TOÁN
Giới thiệu bài toán
Tệp dữ liệu là file mở rộng CSV Trong tệp dữ liệu này có 6 cột và 2000 hàng:
Giải quyết bài toán
3.2.1 Phân tích dữ liệu dataset
Chúng ta sẽ sử dụng 1 số thư viện cần thiết để xử lí và phân tích trực quan dữ liệu:
Hình 3.1 import thư việnTiếp theo chúng ta sẽ load tệp dữ liệu có đuôi csv:
Hình 3.2 load dữ liệu từ file csv Như đã nói ở trên dataset này gồm có các thông tin cơ bản đó là:
Drug Để có thể xem tổng quát về dataset này ta có thể sử dụng
Hình 3.3 tổng quát về dataset
Giờ ta xây dựng mô hình máy học hồi quy tuyến tính để dự đoán giá bán dựa trên giá trị các cột khác.
Bây giờ chúng ta sẽ sử dụng histplot() để vẽ biểu đồ độ tuổi:
Hình 3.5 sử dụng histplot() để vẽ biểu đồ độ tuổi
Ta thấy độ tuổi thường tập trung ở mức 15 đến 74.
Tiếp theo đó là giới tính với biểu đồ cột:
Hình 3.6 Biểu đồ giới tính
Hình 3.8, biểu đồ về Cholesterol
Biểu đồ về Na_to_K:
Bảng 3.9, biểu đồ về Na_to_K
Hình 3.10 Biểu đồ về Drug
3.2.2 Xây dựng mô hình phân loại thuốc
3.2.2.1 Phân tách dữ liệu thành train và test
Hình 3.11 Phân tách dữ liệu
3.2.2.2 Tạo model và training Linear Regression
Từ thư viện Scikit – Learn ,
Hình 3.12 tạo model và training Linear Regression
Nếu kết quả trả về là một hàm, chứng tỏ mô hình đã train xong
3.2.3 Dự đoán mô hình Để dự đoán và kiểm tra mô hình, ta sử dụng một mô hình máy học đã được huấn luyện để dự đoán giá nhà dựa trên các đặc trưng đầu vào mới:
Để phân loại thuốc, một DataFrame mới được tạo ra với các giá trị đặc trưng mới cho đặc điểm đối tượng.
Mô hình được áp dụng để dự đoán giá cho các giá trị đặc trưng mới, và các giá trị dự đoán này sẽ được lưu trữ trong một biến.
Cuối cùng, các giá trị dự đoán này được in ra màn hình.
Hình 3.14 dùng phương thức predict() truyền đối số new_data
Hình 3.15 kết quả hoàn thành và biểu đồ