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

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.

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

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ