Phần 3: Chuẩn bị dữ liệu – Lập trình AI bằng Python

Phần 3: Chuẩn bị dữ liệu                        – Lập trình AI bằng Python
Chúng tôi đã nghiên cứu các thuật toán học máy có theo dõi cũng như là không được theo dõi. Các thuật toán này yêu cầu dữ liệu được định dạng để bắt đầu quá trình đào tạo. Chúng ta phải chuẩn bị hay định dạng dữ liệu theo 1 cách nhất định để nó có thể được cung cấp làm đầu vào cho các thuật toán ML.
Bài này tập trung nhiều vào việc chuẩn bị dữ liệu cho các thuật toán học máy.

1. Tiền xử lý dữ liệu :

Trong cuộc sống hằng ngày, ta xử lý nhiều dữ liệu nhưng dữ liệu này ở dạng thô. Để cung cấp dữ liệu làm đầu vào của các thuật toán học máy, ta cần chuyển nó thành 1 dữ liệu có ý nghĩa. Đó là nơi mà quá trình tiền xử lý dữ liệu thành hình ảnh. Nói theo cách khác, ta có thể cho rằng rằng trước khi cung cấp dữ liệu cho các thuật toán học máy, ta cần xử lý trước dữ liệu.
Những bước xử lý dữ liệu :
Bước 1Nhập các helpful packages – Nếu như ta đang dùng Python thì đây sẽ là bước trước tiên để chuyển dữ liệu sang 1 định dạng nhất định, tức là tiền xử lý. Nó có thể được bắt đầu như dưới đây:
import numpy as np
import sklearn.preprocessing
Tại đây ta đã sử dụng 2 thư viện :
  • NumPy – Về căn bản NumPy là 1 gói xử lý mảng mục đích chung được thiết kế để thao tác hiệu quả các mảng đa chiều lớn của những bản ghi thoải mái mà không phải hy sinh nhiều tốc độ cho các mảng đa chiều nhỏ.
  • Sklearn.preprocessing – thư viện này cung cấp khá nhiều tính năng tiện ích thông dụng và các lớp biến áp để thay đổi các vectơ điểm đặc biệt thô thành 1 biểu diễn phù hợp hơn với những thuật toán học máy.
Bước 2Xác định dữ liệu mẫu – Sau khi nhập những gói, ta cần xác định những dữ liệu mẫu để áp dụng những kỹ thuật tiền xử lý trên dữ liệu đó. Hiện tại ta sẽ xác định dữ liệu mẫu sau:
input_data = np.array([2.1, -1.9, 5.5],
                      [-1.5, 2.4, 3.5],
                      [0.5, -7.9, 5.6],
                      [5.9, 2.3, -5.8])
Bước 3 Áp dụng kỹ thuật tiền xử lý – Trong bước này, ta cần áp dụng bất kỳ kỹ thuật tiền xử lý nào.
Phần dưới đây giới thiệu những kỹ thuật tiền xử lý dữ liệu.

2. Kỹ thuật tiền xử lý dữ liệu :

Những kỹ thuật để xử lý trước dữ liệu được giới thiệu sau đây:
a. Binarization :
Đây chính là kỹ thuật tiền xử lý được dùng khi ta cần chuyển những giá trị số thành những giá trị Boolean. Chúng ta sẽ có thể sử dụng 1 phương thức có sẵn để mã hóa dữ liệu đầu vào bằng cách sử dụng 0,5 làm giá trị ngưỡng theo cách sau:
data_binarized = preprocessing.Binarizer(threshold = 0.5).remodel(input_data)
print("nBinarized knowledge:n", data_binarized)
Hiện tại, sau khi chạy đoạn mã trên, ta sẽ được nhận kết quả sau, toàn bộ những giá trị trên 0,5 (giá trị ngưỡng) sẽ được chuyển thành 1 và toàn bộ những giá trị dưới 0,5 sẽ được chuyển thành 0.
Binarized knowledge :
[[ 1. 0. 1.]
[ 0. 1. 1.]
[ 0. 0. 1.]
[ 1. 1. 0.]]
b, Mean Removal
Đây chính là 1 kỹ thuật tiền xử lý rất thông dụng khác được dùng trong học máy. Về căn bản, nó được dùng để xóa bỏ giá trị trung bình khỏi vectơ điểm đặc biệt để mọi đối tượng đều căn giữa bằng 0. Chúng tôi cũng sẽ có thể xóa sai lệch khỏi những đối tượng trong vectơ đối tượng. Để áp dụng kỹ thuật tiền xử lý xóa bỏ trung bình trên dữ liệu mẫu, chúng ta sẽ có thể viết mã Python được hiển thị phía dưới. Mã sẽ hiện ra độ lệch trung bình và độ lệch chuẩn của dữ liệu đầu vào –
print("Mean = ", input_data.imply(axis = 0))
print("Std deviation = ", input_data.std(axis = 0))
Đầu ra :
Mean = [ 1.75       -1.275       2.2]
Std deviation = [ 2.71431391  4.20022321  4.69414529]
Hiện tại, đoạn mã sau đây sẽ xóa bỏ Độ lệch trung bình và Độ lệch chuẩn của dữ liệu đầu vào  :
data_scaled = preprocessing.scale(input_data)
print("Mean =", data_scaled.imply(axis=0))
print("Std deviation =", data_scaled.std(axis = 0))
Đầu ra :
Mean = [ 1.11022302e-16 0.00000000e+00 0.00000000e+00]
Std deviation = [ 1.             1.             1.]
c. Scaling :
Nó là 1 kỹ thuật tiền xử lý dữ liệu khác được dùng để chia tỷ lệ các vectơ điểm đặc biệt. Chia tỷ lệ của vectơ đối tượng là cần thiết vì giá trị của mọi đối tượng có thể khác nhau giữa nhiều giá trị ngẫu nhiên. Nói theo cách khác, ta có thể cho rằng rằng việc mở rộng quy mô là quan trọng bởi chúng tôi không thích bất kỳ đối tượng địa lý nào là tổng hợp lớn hay nhỏ. Với sự giúp đỡ của mã Python dưới đây, chúng ta sẽ có thể thực hiện điều chỉnh tỷ lệ dữ liệu đầu vào của chính mình, tức là vector điểm đặc biệt :
#Min mã scaling :
data_scaler_minmax = preprocessing.MinMaxScaler(feature_range=(0,1))
data_scaled_minmax = data_scaler_minmax.fit_transform(input_data)
print ("nMin max scaled knowledge:n", data_scaled_minmax)
Min mã scaled knowledge
[ [ 0.48648649  0.58252427   0.99122807]
[   0.          1.           0.81578947]
[   0.27027027  0.           1.        ]
[   1.          0. 99029126  0.        ]]
d. Normalization :
Nó là 1 kỹ thuật tiền xử lý dữ liệu khác được dùng để chỉnh sửa các vectơ điểm đặc biệt. Loại chỉnh sửa như thế là cần thiết để đo các vectơ điểm đặc biệt trên 1 tỷ lệ chung. Tiếp theo là 2 loại chuẩn hóa có thể được dùng trong học máy :
L1 Normalization :
Nó cũng đã được gọi là Sai lệch Tuyệt đối Ít nhất. Loại chuẩn hóa này chỉnh sửa những giá trị để tổng những giá trị tuyệt đối luôn lên tới 1 trong mỗi hàng. Nó có thể được triển khai trên dữ liệu đầu vào với sự giúp đỡ của mã Python sau:
# Normalize knowledge
data_normalized_l1 = preprocessing.normalize(input_data, norm = 'l1')
print("nL1 normalized knowledge:n", data_normalized_l1)
kết quả :
L1 normalized knowledge:
[[ 0.22105263  -0.2          0.57894737]
[ -0.2027027    0.32432432   0.47297297]
[  0.03571429  -0.56428571   0.4       ]
[  0.42142857   0.16428571  -0.41428571]]
L2 Normalization :
Nó cũng đã được gọi là bình phương nhỏ nhất. Loại chuẩn hóa này chỉnh sửa những giá trị để tổng các ô vuông luôn lên tới 1 trong mỗi hàng. Nó có thể được triển khai trên dữ liệu đầu vào với sự giúp đỡ của mã Python sau:
# Normalize knowledge
data_normalized_l2 = preprocessing.normalize(input_data, norm = 'l2')
print("nL2 normalized knowledge:n", data_normalized_l2)
Kết quả :
L2 normalized knowledge:
[[ 0.33946114  -0.30713151   0.88906489]
[ -0.33325106   0.53320169   0.7775858 ]
[  0.05156558  -0.81473612   0.57753446]
[  0.68706914   0.26784051  -0.6754239 ]]

3. Label trong dữ liệu :

Chúng ta đã biết rằng dữ liệu ở 1 định dạng nhất định là cần thiết cho các thuật toán học máy. 1 yêu cầu quan trọng khác là dữ liệu phải được dán nhãn thích hợp trước khi gởi nó làm đầu vào của các thuật toán học máy. Ví dụ, nếu như ta nói về phân loại, có nhiều nhãn trên dữ liệu. Các nhãn đó ở dạng từ, số, v.v. Những chức năng liên quan tới học máy trong sklearn mong rằng dữ liệu phải có nhãn số. Do đó, nếu như dữ liệu ở dạng khác thì nó phải được chuyển đổi thành số. Quá trình biến đổi các nhãn từ thành dạng số được gọi là mã hóa nhãn.
Những bước encodeing label:
Bước 1 : import package deal :
import numpy as np
from sklearn import preprocessing
Bước 2 : Định nghĩa label mẫu :
# Sample enter labels
input_labels = ['red','black','red','green','black','yellow','white']
Bước 3 : Khởi tạo và huấn luyện label :
Trong bước này, ta cần tạo bộ mã hóa nhãn và đào tạo nó. Đoạn mã Python sau sẽ giúp thực hiện việc này:
# Creating the label encoder
encoder = preprocessing.LabelEncoder()
encoder.match(input_labels)
Kết quả :
LabelEncoder()
Bước 4 : Kiểm tra hiệu suất bằng cách mã hóa danh sách có thứ tự ngẫu nhiên
Bước này có thể được dùng để kiểm tra hiệu suất bằng cách mã hóa danh sách được sắp xếp ngẫu nhiên:
# encoding a set of labels
test_labels = ['green','red','black']
encoded_values = encoder.remodel(test_labels)
print("nLabels =", test_labels)
Các nhãn sẽ được in như dưới đây:
Labels = ['green', 'red', 'black']
Hiện tại, chúng ta sẽ có thể được nhận danh sách những giá trị được mã hóa, tức là các nhãn từ được chuyển đổi thành số như dưới đây:
print("Encoded values =", record(encoded_values))
Kết quả :
Encoded values = [1, 2, 0]
Bước 5 – Kiểm tra hiệu suất bằng cách giải mã 1 bộ số ngẫu nhiên –
# decoding a set of values
encoded_values = [3,0,4,1]
decoded_list = encoder.inverse_transform(encoded_values)
print("nEncoded values =", encoded_values)
Hiện tại, những giá trị được mã hóa sẽ được in như dưới đây:
Encoded values = [3, 0, 4, 1]
print("nDecoded labels =", record(decoded_list))
Những giá trị được giải mã sẽ được in:
Decoded labels = ['white', 'black', 'yellow', 'green']

4. Dữ liệu gắn nhãn và không gắn nhãn :

Dữ liệu không được gắn nhãn chủ yếu gồm các mẫu vật thể tự nhiên hay do con người tạo nên dễ dàng lấy được từ thế giới. Chúng gồm, âm thanh, video, ảnh, tin bài, v.v.
Bên cạnh đó, dữ liệu được gắn nhãn lấy 1 tập hợp dữ liệu không được gắn nhãn và tăng cường mỗi phần của dữ liệu không được gắn nhãn đó bằng những thẻ hay nhãn hay lớp có ý nghĩa. Ví dụ: nếu như ta có 1 tấm ảnh thì nhãn có thể được đặt dựa vào nội dung của tấm ảnh, tức là ảnh của 1 cậu bé hay cô gái hay động vật hay bất kỳ thứ gì nữa. Việc gắn nhãn dữ liệu cần phải có chuyên môn hay sự đánh giá của con người về 1 phần dữ liệu chưa được gắn nhãn nhất định.
Có nhiều tình huống trong đó dữ liệu không được gắn nhãn rất đa dạng và dễ dàng lấy được nhưng dữ liệu được gắn nhãn thường yêu cầu con người / chuyên gia ghi chú. Học tập bán theo dõi nỗ lực kết hợp dữ liệu được gắn nhãn và không được gắn nhãn để xây dựng những mô hình tốt hơn.

admin

Leave a Reply

Your email address will not be published. Required fields are marked *