- vừa được xem lúc

[Python] Làm AI dự đoán size quần áo trong 10 dòng code

0 0 5

Người đăng: Trần Hải Đăng

Theo Viblo Asia

Chào mọi người, đây là lần đầu mình viết bài và mình cũng chỉ mới tìm hiểu về Machine Learning chỉ trong qua nay nên những kiến thức trong bài chỉ vô cùng cơ bản, mục đích chính là cho một số bạn mới giống mình có 1 cái nhìn tổng quan hơn về ML. Và mong có sai sót gì mọi người sẽ góp ý, cảm ơn.


Không lòng vòng anh như Hải Phòng, chúng ta vào chủ đề chính của bài hôm nay luôn. Đầu tiên, chúng ta sẽ đi đến khái niệm về ML(Machine Learning, từ giờ mình sẽ viết tắt) ## **Vậy Machine Learning là gì?** ![](https://images.viblo.asia/6d539ac6-9a89-4cb4-bc90-0bbb1c44353d.png) Machine Learning(Học Máy/Máy Học, yah sure chắc chắn là chúng ta không muốn dịch từ này ra rồi) là một lĩnh vực trong trí tuệ nhân tạo liên quan đến việc nghiên cứu và xây dựng các kĩ thuật cho phép các hệ thống "học" tự động từ dữ liệu để giải quyết những vấn đề cụ thể(Wikipedia). Tóm lại ML là 1 lĩnh vực của trí tuệ nhân tạo, xoay quanh việc sử dụng những dữ liệu có sẵn "dạy" máy tính bằng những thuật toán để giải quyết các vấn đề cụ thể.
VD: Dự đoán size quần áo nhờ các dữ liệu có sẵn( việc chúng ta sẽ làm hôm nay ), dạy AI chơi mario, vô vàn con bot đã, sẽ, và đang tồn tại,...
Các thuật toán ML được chia ra theo 2 cách: 1. Phân loại theo cách học: * Supervised Learning(Học có giảm sát) * UnSupervised Learning(Học không giám sát) * Semi-Supervised Learning(Học bán giám sát) * Reinforcement Learning(Học củng cố) 2. Phân loại theo chức năng: * Regression Algorithms * Classification Algorithms * Instance-based Algorithms * Regularization Algorithms * Bayesian Algorithms * Clustering Algorithms * Artificial Neural Network Algorithms * Dimensionality Reduction Algorithms * Ensemble Algorithms

Vào vấn đề chính

Như tiêu của bài viết hôm nay chúng ta sẽ làm một con AI đơn giản để dự đoán size quần áo, dựa vào cân nặng, tuổi tác và chiều cao bằng ML với 1 dataset(bộ dữ liệu) mà mình đã tìm được trên github
Mẫu dữ liệu: [ [60, 33.0, 160.5, "M"] ]
Trong bài viết hôm nay, chúng ta sẽ tạo 1 file index.py và một file data.csv là dữ liệu mình để nguồn ở bên trên. Sau khi đã tạo 2 file như trên, chúng ta bắt đầu cái thư viện:
>>> pip install scikit-learn pandas #hoặc py -m pip install scikit-learn pandas Khi cài xong thư viện, trong index.py ta import thư viện:

from sklearn.tree import DecisionTreeClassifier #Decision Tree/Cây quyết định
#Classifier/Phân lớp, các bạn có thể tìm hiểu thêm từ các nguồn khác
import pandas as pd #Pandas là thư viện có rất nhiều công cụ để xử lí dử liệu, nhưng hôm nay chúng ta chỉ dùng nó để đọc file csv

Tiếp theo chúng ta sẽ đọc file dữ liệu, lọc những dữ liệu có thể bị trống, chuyển sang mảng numpy rồi gán vào biến preData bằng pandas:

preData = pd.read_csv('data.csv').dropna().to_numpy()
# pd.read_csv: đọc file csv
# Dataframe.dropna: lọc các dữ liệu NaN
# Dataframe.to_numpy: chuyển pandas Dataframe sang numpy array

Vì data của chúng có cả số và chữ, nên cần chuẩn hóa lại, do đó chúng ta cần mảng để quy ước từng kích cỡ với 1 con số(trong trường hợp này là index của nó trong mảng size):

size = ["XXS","XS","S","M","L","XL","XXL","XXXL"]

Kế đến chúng ta sẽ làm bước cuối cùng với dữ liệu, đó là chuẩn hóa:

data = [] #mảng chứa các dữ liệu cân nặng, tuổi, chiều cao
label = [] #mảng chứa size của từng set dữ liệu
# xây dựng cảng mảng trên:
for i in preData: data.append(i[:3]) label.append(size.index(i[3]))#lấy index của cỡ quần áo trong mảng size

Bước cuối cùng của con AI này là xây dựng 1 cây quyết định, và với Scikit learn thì nó lại vô cùng đơn giản:

tree = DecisionTreeClassifier().fit(data, label) # khai báo và fit(không biết dịch kiểu gì,
# chung chung là cho AI học từ data và label) cây quyết định

Vậy là trong chỉ 10 dòng code, chúng ta đã có một AI vô cùng xịn xò, để dự đoán chúng ta sẽ dùng tree.predict, ví dụ:

print(size[tree.predict([[70, 30, 175]])[0]])
# tree.predict nhận vào một mảng 2 chiều, vì data là một mảng 2 chiều, vì thế ta có thể dự đoán nhiều set khác nhau trong 1 lần.
# tree.predict sẽ trả về một mảng(giống label) nên ta cần lấy phần tử mình muốn ra.
# ta đã định dạng nhãn là index trong mảng size nên có thể lấy ra được size áo dạng chữ. >>> XL

Lời kết

Vậy là chúng ta đã thành công tạo ra 1 chiếc AI dù cơ bản nhưng lại rất thiết thực, lại chỉ trong 10 dòng code. Tất nhiên là vì sử dụng thư viện, nếu viết từ đầu thì sẽ không dễ dàng đến thế, nhưng hãy cứ coi đây là bải mở đầu, các bạn hãy cố gắng và không từ bỏ để có thể tự viết ra một chiếc AI thật xịn xò. Chúc các bạn học tốt.

Hầu hết kiến thức trong bài viết được thu thập từ trang machinelearningcoban.com và tài liệu gốc của scikit learn

Bình luận

Bài viết tương tự

- vừa được xem lúc

Hành trình AI của một sinh viên tồi

Mình ngồi gõ những dòng này vào lúc 2h sáng (chính xác là 2h 2 phút), quả là một đêm khó ngủ. Có lẽ vì lúc chiều đã uống cốc nâu đá mà giờ mắt mình tỉnh như sáo, cũng có thể là vì những trăn trở về lý thuyết chồng chất ánh xạ mình đọc ban sáng khiến không tài nào chợp mắt được hoặc cũng có thể do mì

0 0 131

- vừa được xem lúc

[Deep Learning] Key Information Extraction from document using Graph Convolution Network - Bài toán trích rút thông tin từ hóa đơn với Graph Convolution Network

Các nội dung sẽ được đề cập trong bài blog lần này. . Tổng quan về GNN, GCN. Bài toán Key Information Extraction, trích rút thông tin trong văn bản từ ảnh.

0 0 204

- vừa được xem lúc

Tìm hiểu về YOLO trong bài toán real-time object detection

1.Yolo là gì. . Họ các mô hình RCNN ( Region-Based Convolutional Neural Networks) để giải quyết các bài toán về định vị và nhận diện vật thể.

0 0 272

- vừa được xem lúc

Encoding categorical features in Machine learning

Khi tiếp cận với một bài toán machine learning, khả năng cao là chúng ta sẽ phải đối mặt với dữ liệu dạng phân loại (categorical data). Khác với các dữ liệu dạng số, máy tính sẽ không thể hiểu và làm việc trực tiếp với categorical variable.

0 0 244

- vừa được xem lúc

TF Lite with Android Mobile

Như các bạn đã biết việc đưa ứng dụng đến với người sử dụng thực tế là một thành công lớn trong Machine Learning.Việc làm AI nó không chỉ dừng lại ở mức nghiên cứu, tìm ra giải pháp, chứng minh một giải pháp mới,... mà quan trọng là đưa được những nghiên cứu đó vào ứng dụng thực tế, được sử dụng để

0 0 55

- vừa được xem lúc

Xây dựng hệ thống Real-time Multi-person Tracking với YOLOv3 và DeepSORT

Trong bài này chúng ta sẽ xây dựng một hệ thống sử dụng YOLOv3 kết hợp với DeepSORT để tracking được các đối tượng trên camera, YOLO là một thuật toán deep learning ra đời vào tháng 5 năm 2016 và nó nhanh chóng trở nên phổ biến vì nó quá nhanh so với thuật toán deep learning trước đó, sử dụng YOLO t

0 0 303