Nếu bạn đang sử dụng Python
và đang muốn tìm một thư viện mạnh mẽ mà bạn có thể mang các thuật toán học máy (machine learning) vào trong một hệ thống thì không còn thư viện nào thích hợp hơn scikit-learn
. Thư viện này tích hợp rất nhiều thuật toán hiện đại và cố điển giúp bạn vừa học vừa tiến hành đưa ra các giải pháp hữu ích cho bài toán của bạn một cách đơn giản.
Sau bài viết này, bạn sẽ có một góc nhìn tổng quan về thư viện scikit-learn và giới thiệu cho bạn những tài liệu có thể học thêm.
Scikit-learn ban đầu được đề xuất bởi David Cournapeau
trong một dự án mùa hè của Google
vào năm 2007.
Later Matthieu Brucher tham gia dự án trên và bắt đầu sử dụng nó làm một phần luận văn tiến sĩ của ông ấy. Vào năm 2010, INRIA bắt đầu tài trợ và phiên bản đầu tiên được xuất bản (v0.1 beta) vào cuối tháng 1 năm 2010.
Dự án vẫn đang được nghiên cứu bởi một đội ngũ hơn 30 nhà nghiên cứu đến từ các công ty lớn INRIA
, Google
, Tinyclues
và Python Software Foundation
.
Scikit-learn (Sklearn) là thư viện mạnh mẽ nhất dành cho các thuật toán học máy được viết trên ngôn ngữ Python. Thư viện cung cấp một tập các công cụ xử lý các bài toán machine learning và statistical modeling gồm: classification
, regression
, clustering
, và dimensionality reduction
.
Thư viện được cấp phép bản quyền chuẩn FreeBSD
và chạy được trên nhiều nền tảng Linux. Scikit-learn được sử dụng như một tài liệu để học tập.
Để cài đặt scikit-learn trước tiên phải cài thư viện SciPy
(Scientific Python). Những thành phần gồm:
Những thư viện mở rộng của SciPy thường được đặt tên dạng SciKits
. Như thư viện này là gói các lớp, hàm sử dụng trong thuật toán học máy thì được đặt tên là scikit-learn.
Scikit-learn hỗ trợ mạnh mẽ trong việc xây dựng các sản phẩm. Nghĩa là thư viện này tập trung sâu trong việc xây dựng các yếu tố: dễ sử dụng, dễ code, dễ tham khảo, dễ làm việc, hiệu quả cao.
Mặc dù được viết cho Python nhưng thực ra các thư viện nền tảng của scikit-learn lại được viết dưới các thư viện của C để tăng hiệu suất làm việc. Ví dụ như: Numpy(Tính toán ma trận), LAPACK, LibSVM và Cython.
Thư viện tập trung vào việc mô hình hóa dữ liệu. Nó không tập trung vào việc truyền tải dữ liệu, biến đổi hay tổng hợp dữ liệu. Những công việc này dành cho thư viện Numpy
và Pandas
.
Hình trên lấy từ một bản demo của thuật toán phân cụm
Sau đâu là một số nhóm thuật toán được xây dựng bởi thư viện scikit-learn:
Phân cụm
dữ liệu không gán nhãn. Ví dụ thuật toán KMeansKiểm thử chéo
, đánh giá độ hiệu quả của thuật toán học giám sát sử dụng dữ liệu kiểm thử (validation data) trong quá trình huấn luyện mô hình.Bộ dữ liệu
được tích hợp sẵn trong thư viện. Hầu như các bộ dữ liệu đều đã được chuẩn hóa và mang lại hiêu suất cao trong quá trình huấn luyện như iris, digit, …Giảm số lượng thuộc tính
quan trọng của dữ liệu bằng các phương pháp như tổng hợp, biểu diễn dữ liệu và lựa chọn đặc trưng. Ví dụ thuật toán PCA (Principal component analysis).Phương pháp tập hợp
sử dụng nhiều thuật toán học tập để có được hiệu suất dự đoán tốt hơn so với bất kỳ thuật toán học cấu thành nào.Trích xuất đặc trưng
. Mục đích là để định nghĩa các thuộc tình với dữ liệu hình ảnh và dữ liệu ngôn ngữ.Trích chọn đặc trưng
. Lựa chọn các đặc trưng có ý nghĩa trong việc huấn luyện mô hình học giám sát.Tinh chỉnh tham số
. Các thuật toán phục vụ việc lựa chọn tham số phù hợp để tối ưu hóa mô hình.Phân tích dữ liệu đa chiều
phức tạp.Học giám sát
. Mảng lớn các thuật toán học máy hiện nay. Ví dụ như linear models, discriminate analysis, naive bayes, lazy methods, neural networks, support vector machines và decision trees.Chúng ta đi tìm hiểu một ví dụ cụ thể sau
Tôi muốn cho bạn một ví dụ để cho bạn thấy việc sử dụng thư viện dễ dàng như thế nào.
Ở ví dụ sau, chúng ta sử dụng cây quyết định Decision tree
phân loại để mô hình hóa bộ dữ liệu hoa Iris.
Bộ dữ liệu này được cung cấp dưới dạng tập dữ liệu mẫu với thư viện và được tải. Trình phân loại phù hợp với dữ liệu và sau đó dự đoán được thực hiện trên dữ liệu đào tạo.
Bộ dữ liệu này được cung cấp dưới dạng tập dữ liệu mẫu ngay trong thư viện sau đó được tải xuống. Thuật toán phân loại bắt đầu huấn luyện mô hình với bộ dữ liệu Iris ban đầu sau đó dự đoán lại các dữ liệu huấn luyện.
Cuối cùng, chúng ta đánh giá độ tốt của mô hình bằng quan sát accuracy
và confusion matrix
của 2 tập nhãn thực tế và nhãn dự đoán của mô hình.
# Sample Decision Tree Classifier
from sklearn import datasets
from sklearn import metrics
from sklearn.tree import DecisionTreeClassifier
# load the iris datasets
dataset = datasets.load_iris()
# fit a CART model to the data
model = DecisionTreeClassifier()
model.fit(dataset.data, dataset.target)
print(model)
# make predictions
expected = dataset.target
predicted = model.predict(dataset.data)
# summarize the fit of the model
print(metrics.classification_report(expected, predicted))
print(metrics.confusion_matrix(expected, predicted))
Chạy ví dụ trên được kết quả như sau. Bạn có thể thấy chi tiết mô hình cây phân loại được huấn luyện với các tham số chi tiết như thế nào, mỗi tham số ảnh hưởng rất lớn tới việc mô hình có tốt hay không. Phía dưới là classification report
và confusion matrix
của mô hình.
DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,
max_features=None, max_leaf_nodes=None, min_samples_leaf=1,
min_samples_split=2, min_weight_fraction_leaf=0.0,
presort=False, random_state=None, splitter='best')
precision recall f1-score support
0 1.00 1.00 1.00 50
1 1.00 1.00 1.00 50
2 1.00 1.00 1.00 50
avg / total 1.00 1.00 1.00 150
[[50 0 0]
[ 0 50 0]
[ 0 0 50]]
Bạn có thể tìm thấy tại đây danh sách một loạt các công ty lớn, uy tín sử dụng thư viện làm nền tảng phát triển công nghệ của họ. Ví dụ như J.P.Morgan, Hugging Face, Betaworks, Spotify, Inria, Mendeley, wise.io, Evernote, Telecom ParisTech, AWeber,… Ngoài ra còn có hàng trăm tổ chức lớn hơn sử dụng công nghệ này.
Thư viện có phạm vi ứng dụng rộng, những bản phát hành đều được nghiên cứu quản lý chặt chẽ do đó nó phù hợp ứng dụng cho cả các dự án Prototype
và Production
.
Bạn có thể vào Scikit-Learn để tìm hiểu thêm, lấy mã nguồn từ Github và tìm kiếm các phiên bản trên Sourceforge .
Với người mới bắt đầu, tôi khuyên bạn nên bắt đầu với hướng dẫn cơ bản rồi đến đọc các thuật toán cụ thể và các thuật toán liên quan để tổng hợp kiến thức và chạy lại các ví dụ để hiểu đầy đủ, hệ thống một bài toán.
Học máy thực thất là ngành nghiên cứu về dữ liệu lớn, toán học đại cương, xác suất thống kê nên khi tiếp cận không được vội vàng mà phải hiểu cặn kẽ từng khía cạnh rồi từ đó mới tự xây dựng mô hình từ bé đến lớn hoạt động hiệu quả cho từng bài toán cụ thể. Cuối cùng, bạn mới có thể tham gia một dự án học lớn với một khối lượng công việc cần sự kiên trì và khả năng tính toán cao.
Scikit-learn là một thư viện do đó tài liệu hướng dẫn triển khai chúng là rất quan trọng để bạn hoàn thành công việc.
Khi bạn hướng đến việc làm một dự án hay muốn có một góc nhìn rộng hơn về các bài toán học máy. Bạn nên tham gia nghiên cứu và đọc các tài liệu khoa học. Ở đây, những bài báo khác nhau về cùng một chủ đề sẽ cho bạn khả năng khái quát vấn đề từ đó tổng hợp, hiểu sâu hơn về học máy.
Nếu bạn cần một cuốn sách nâng cao tổng hợp, tôi giới thiệu bạn cuốn thứ 2. Cuốn sách nêu ra phương pháp xây dựng một hệ thống học máy tỷ mỉ. Những ví dụ đưa ra ngắn gọn, cơ bản, dễ hiểu. Cuốn sách viết quan tâm vào xây dựng các mô hình nên khả năng tổng hợp cao phù hợp cho đối tượng đã có kiến thức nền về học máy và muốn xây dựng hệ thống học máy tối ưu với Python và thư viện Scikit-learn.
Trên đây, một góc nhìn tổng quan về thư viện scikit-learn và giới thiệu cho bạn các nguồn tài liệu chuẩn và các cuốn sách tham khảo để các bạn có thể học cũng như nghiên cứu sâu hơn. Chúc các bạn thành công.
Nguồn : https://codelearn.io/sharing/scikit-learn-trong-python-la-gi
You need to login in order to like this post: click here
YOU MIGHT ALSO LIKE