CHƯƠNG 1 MỘT SỐ KIẾN THỨC CHUẨN BỊ Chương này trình bày các kiến thức cơ sở về Đại số tuyến tính; Giới thiệu về học máy. Đây là những kiến thức giúp cho việc hiểu và ứng dụng của các chương sau. Tổng quan về ngôn ngữ Python 1. Tổng quan Python là một ngôn ngữ lập trình hướng đối tượng rất thông dụng dùng để viết các tiện ích hệ thống và các đoạn mã trên Internet.
Nó cũng được sử dụng như ngôn ngữ kết dính đóng vai trò tích hợp C và C++. Được tạo ra bởi Guido van Rossum tại Amsterdam năm 1990. Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động. Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý.
Phiên bản mới nhất của Python hiện tại (thời điểm viết bài) là bản 3. Python là ngôn ngữ có hình thức khá đơn giản và rõ ràng, do đó tạo nên sự dễ dàng tiếp cânh cho những lập trình viên mới bắt đầu. Ban đầu, Python được phát triển để chạy trên nền Unix. Nhưng rồi theo thời gian, nó đã "bành trướng" sang mọi hệ điều hành từ MS-DOS đến Mac OS, OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix.
Mặc dù sự phát triển của Python có sự đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum hiện nay vẫn là tác giả chủ yếu của Python. Ông giữ vai trò chủ chốt trong việc quyết định hướng phát triển của Python. Kiến thức tham khảo về Python được tham khảo từ tài liệu [8], [9]. Một số tính chất • Python is Interpreted: Nhờ chức năng thông dịch mà trình thông dịch (Interpreter) của Python có thể xử lý lệnh tại thời điểm chạy chương trình (runtime).
Nhờ đó mà ta không cần biên dịch chương trình trước 4 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com khi thực hiện nó (tương tự như Perl và PHP). • Python is Interactive: Tính năng tương tác của Python giúp ta có thể tương tác trực tiếp với trình thông dịch của nó ngay tại dấu nhắc lệnh. Cụ thể: Ta có thể thực hiện lệnh một cách trực tiếp tại dấu nhắc của Python. • Python is 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 is a Beginner’s Language: Mặc dầu Python được xem là ngôn ngữ lập trình dành cho những ai mới làm quen với việc lập trình trên máy tính, nhưng nó hỗ trợ mạnh cho việc phát triển nhiều loại ứng dụng khác nhau, từ các chương trình xử lý văn bản đơn giản đến các ứng dụng web, đến các chương trình game,. Tính năng Ngôn ngữ lập trình đơn giản, dễ học: Python có cú pháp rất đơn giản, rõ ràng. Nó dễ đọc và viết hơn rất nhiều khi so sánh với những ngôn ngữ lập trình khác như C++, Java. Python làm cho việc lập trình trở nên thú vị, cho phép tập trung vào những giải pháp chứ không phải cú pháp.
Miễn phí, mã nguồn mở: Ta có thể tự do sử dụng và phân phối Python, thậm chí là dùng cho mục đích thương mại. Vì là mã nguồn mở, ta không những có thể sử dụng các phần mềm, chương trình được viết trong Python mà còn có thể thay đổi mã nguồn của nó. Python có một cộng đồng rộng lớn, không ngừng cải thiện nó mỗi lần cập nhật. Khả năng di chuyển: Các chương trình Python có thể di chuyển từ nền tảng này sang nền tảng khác và chạy nó mà không có bất kỳ thay đổi nào.
Nó chạy liền mạch trên hầu hết tất cả các nền tảng như Windows, macOS, Linux. Khả năng mở rộng và có thể nhúng: Giả sử một ứng dụng đòi hỏi sự phức tạp rất lớn, ta có thể dễ dàng kết hợp các phần code bằng C, C++ và những 5 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ngôn ngữ khác (có thể gọi được từ C) vào code Python. Điều này sẽ cung cấp cho ứng dụng của ta những tính năng tốt hơn cũng như khả năng scripting mà những ngôn ngữ lập trình khác khó có thể làm được. Ngôn ngữ thông dịch cấp cao: Không giống như C/C++, với Python, ta không phải lo lắng những nhiệm vụ khó khăn như quản lý bộ nhớ, dọn dẹp những dữ liệu vô nghĩa,.
Khi chạy code Python, nó sẽ tự động chuyển đổi code sang ngôn ngữ máy tính có thể hiểu. Ta không cần lo lắng về bất kỳ hoạt động ở cấp thấp nào. Thư viện tiêu chuẩn lớn để giải quyết những tác vụ phổ biến: Python có một số lượng lớn thư viện tiêu chuẩn giúp cho công việc lập trình của ta trở nên dễ thở hơn rất nhiều, đơn giản vì không phải tự viết tất cả code. Ví dụ: Ta cần kết nối cơ sở dữ liệu MySQL trên Web server? Ta có thể nhập thư viện MySQLdb và sử dụng nó.
Những thư viện này được kiểm tra kỹ lưỡng và được sử dụng bởi hàng trăm người. Vì vậy, ta có thể chắc chắn rằng nó sẽ không làm hỏng code hay ứng dụng của mình. Hướng đối tượng: Mọi thứ trong Python đều là hướng đối tượng. Lập trình hướng đối tượng (OOP) giúp giải quyết những vấn đề phức tạp một cách trực quan.
Với OOP, ta có thể phân chia những vấn đề phức tạp thành những tập nhỏ hơn bằng cách tạo ra các đối tượng. Các lĩnh vực sử dụng lập trình python phổ biến Lập trình ứng dụng web: ta có thể tạo web app có khả năng mở rộng (scalable) được bằng cách sử dụng framework và CMS (Hệ thống quản trị nội dung) được tích hợp trong Python. Vài nền tảng phổ biến để tạo web app là: Django, Flask, Pyramid, Plone, Django CMS. Các trang như Mozilla, Reddit, Instagram và PBS đều được viết bằng Python.
Khoa học và tính toán: Có nhiều thư viện trong Python cho khoa học và tính toán số liệu, như SciPy và NumPy, được sử dụng cho những mục đích chung chung trong tính toán. Và, có những thư viện cụ thể như: EarthPy cho khoa học trái đất, AstroPy cho Thiên văn học,. Ngoài ra, Python còn được 6 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com sử dụng nhiều trong machine learning, khai thác dữ liệu và deep learning. Tạo nguyên mẫu phần mềm: Python chậm hơn khi so sánh với các ngôn ngữ được biên dịch như C++ và Java.
Nó có thể không phải là lựa chọn tốt nếu nguồn lực bị giới hạn và yêu cầu về hiệu quả là bắt buộc. Tuy nhiên, Python là ngôn ngữ tuyệt vời để tạo những nguyên mẫu (bản chạy thử - prototype). Ví dụ, ta có thể sử dụng Pygame (thư viện viết game) để tạo nguyên mẫu game trước. Nếu thích nguyên mẫu đó có thể dùng C++ để viết game thực sự.
Ngôn ngữ tốt để dạy lập trình: Python được nhiều công ty, trường học sử dụng để dạy lập trình cho trẻ em và những người mới lần đầu học lập trình. Bên cạnh những tính năng và khả năng tuyệt vời thì cú pháp đơn giản và dễ sử dụng của nó là lý do chính cho việc này. Đặc biệt trong lĩnh vực khoa học dữ liệu Python là ngôn ngữ được sử dụng phổ biến nhất vì có nhiều thư viện hỗ trợ rất tốt cho Machine Learning và Data Science: • scipy, numpy cho tính toán khoa học với mảng nhiều chiều • sklearn cho các thuật toán Machine Learning cơ bản • tensorflow, pytorch, keras, theano,. cho các thuật toán Deep Learning • pandas cho xử lý dữ liệu dạng bảng 1.
Giới thiệu về học máy 1. Khái niệm học máy Khái niệm học có nghĩa rộng giống như sự thông minh, bao gồm cả quá trình và khó có một định nghĩa chính xác. Theo nghĩa tự điển, học là quá trình thu nhận kiến thức, kỹ năng do người khác truyền lại hoặc đọc đi, đọc lại, nghiềm ngẫm ghi nhớ ( học thuộc lòng). Rộng hơn, học bao gồm cả quá trình đúc rút tri thức từ các quan sát, trải nghiệm thực tiễn.
Học máy ( machine learning) mang hai nghĩa thông dụng: 7 LUAN VAN CHAT LUONG download : add luanvanchat@agmail. sử dụng máy tính để khám phá tri thức từ dữ liệu, 2. sự học trong máy (tác tử: agent). Về phương diện công nghệ, học máy là một lĩnh vực của trí tuệ nhân tạo, trong đó nghiên cứu các kỹ thuật xây dựng và phát triển các chương trình máy tính có thể thích nghi và “học” từ các dữ liệu mẫu hoặc kinh nghiệm.
Đến nay, đã có nhiều định nghĩa khái niệm này, tuy nhiên khó có một định nghĩa thỏa đáng được mọi người thừa nhận. Định nghĩa sau phát triển từ định nghĩa của T. Mitchell cho ta cách nhìn toán học của một chương trình học khi nghiên cứu, thiết kế. Một chương trình máy tính được gọi là học từ dữ liệu, kinh nghiệm E đối với lớp nhiệm vụ T và độ đo mức thực hiện P nếu việc thực hiện các nhiệm vụ T của nó khi đo bằng P được cải tiến nhờ dữ liệu hoặc kinh nghiệm E.
Theo định nghĩa này, người ta cần tối ưu hóa độ đo thực hiện P dựa trên phân tích dữ liệu, kinh nghiệm E để tìm cách thực hiện nhiệm vụ T tốt nhất. Ví dụ 1: Phân tích dữ liệu bán lẻ của siêu thị Hằng ngày các siêu thị bán ra một lượng lớn những mặt hàng phong phú và lưu lại các hóa đơn thanh toán(bản sao giỏ hàng). Từ các dữ liệu bán lẻ có được, ta có thể phân tích các giỏ hàng để tiên đoán được một khách hàng mua mặt hàng A thì sẽ mua mặt hàng B với xác suất bao nhiêu? Nếu xác suất này là lớn thì ta nên xếp các mặt hàng này gần nhau, như thế tiện cho khách hàng và lượng hàng bán được cũng tăng lên so với việc để khách hàng phải tìm kiếm khắp nơi. Rộng hơn, nếu có mô hình phân tích tốt, ta cũng có thể dự đoán được lượng hàng cần đáp ứng trong thời gian tới, xu thế sở thích của khách hàng, trên cơ sở đó có được quyết sách thích ứng.
Trong ví dụ này T là dự báo, E là dữ liệu bán lẻ lưu trữ và P là độ chính xác của kết quả dự báo. Ví dụ 2: Đối sánh vân tay 8 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Bài toán đối sánh vân tay bắt nguồn từ hai bài toán truy nguyên và xác thực vân tay. Trong bài toán truy nguyên, người ta phải đối sánh một ảnh vân tay thu được khi điều tra với các ảnh vân tay trong kho lưu trữ để xác định xem có vân tay nào trong kho lưu trữ là do cùng một ngón tay lăn ra với ảnh điều tra không.