hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Chia sẻ IT
  • Machine Learning
Tiền xử lý dữ liệu trong Machine Learning, ví dụ cụ thể.

Tiền xử lý dữ liệu trong Machine Learning, ví dụ cụ thể.

  • 02-09-2021
  • chuong xuan
  • 0 Comments
Các phần trong tiền xử lý dữ liệu

Tiền xử lý dữ liệu là một bước không thể thiếu trong Machline Learning vì như bạn đã biết, dữ liệu là một phần rất quan trọng, ảnh hưởng trực tiếp tới việc Training Model. Do vậy, tiền xử lý dữ liệu trước khi đưa nó vào model là rất quan trọng, giúp loại bỏ hoặc bù đắp những dữ liệu còn thiếu.

Trong bài viết này tôi sẽ giúp bạn hiểu được các xử lý dữ liệu trước khi đưa vào mô hình như thế nào thông qua một ví dụ cụ thể chứ không chỉ là lý thuyế khô khan.

Đầu tiền chắc chắn là cần tập dữ liệu để các bạn thực hành.

Mục lục

  • Chuẩn bị dữ liệu.
  • Tách dữ liệu
  • Tiền xử lý dữ liệu
  • 1. Xử lý Missing Data
  • 2. Xử lý categorical data
  • Splitting Training set và Test set
  • Feature Scaling

Chuẩn bị dữ liệu.

Các bạn có thể lấy dữ liệu theo link dưới đây. Thì đơn giản đây là dữ liệu gồm 10 row và 4 column, phần sau bạn sẽ hiểu tại sao tôi lại chọn dữ liệu gồm 10 row để thực thi. Dữ liệu thống kê hành vi mua xe của một số người trên các quốc gia, có độ tuổi và mức lương khác nhau. Trong đó cũng có ,một vài dữ liệu bị mất.

dataset = pd.read_csv("data.csv")

   Country   Age   Salary Purchased
0   France  44.0  72000.0        No
1    Spain  27.0  48000.0       Yes
2  Germany  30.0  54000.0        No
3    Spain  38.0  61000.0        No
4  Germany  40.0      NaN       Yes
5   France  35.0  58000.0       Yes
6    Spain   NaN  52000.0        No
7   France  48.0  79000.0       Yes
8  Germany  50.0  83000.0        No
9   France  37.0  67000.0       Yes

Tách dữ liệu

Xử dụng hàm .iloc[] trong pandas.core để cắt dữ liệu, xác định được đâu là features và đâu là output.

Ví dụ: X = dataset.iloc[:3, :-1] // cắt từ 3 hàng đầu và bỏ cột cuối.

     Country   Age   Salary
0   France  44.0  72000.0
1    Spain  27.0  48000.0
2  Germany  30.0  54000.0

Và để xử lý dữ liệu thì bạn phải chuyển về numpy array với hàm X = dataset.iloc[:3, :-1].values.

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

Sau đây sẽ là một số khái niệm tôi dùng trong bài viết này:

  1. Xử lý Missing Data
  2. Standardization (Phân phối chuẩn)
  3. Handling Catogrical Variables
  4. One-hot Encoding
  5. Multicollinearity

1. Xử lý Missing Data

Trên bất kì loại dataset nào trên thế giới đều có những few null values. Điều đó thì thực sự không tốt khi bạn muốn sử dụng các mô hình như regression (hồi quy) hay classification(phân lớp) hay bất kì các mô hình khác. Chú ý: Trong Python thì NULL cũng được biểu diễn bằng NAN. Do vậy chúng có thể được sử dụng thay thế cho nhau.

Bạn có thể tự thực hiện code bằng cách dùng vòng lặp duyệt quan các phần tử của từng cột xem cột nào có giá trị tương đương isnull() và xử lý.

Trong ví dụ này tôi sẽ hướng dẫn bạn xử dụng thư viện Sklearn giúp bạn dễ dàng xử lý các missing data. SimpleImputer là một class của Sklearn nó hỗ trợ xử lý các missing data là số và thay chúng là một giá trị trung bình của cột, tần suất của dữ liệu suất hiện nhiều nhất,…

from sklearn.impute import SimpleImputer

#Create an instance of Class SimpleImputer: np.nan is the empty value in the dataset
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')

#Replace missing value from numerical Col 1 'Age', Col 2 'Salary'
imputer.fit(X[:, 1:3]) 

#transform will replace & return the new updated columns
X[:, 1:3] = imputer.transform(X[:, 1:3])

2. Xử lý categorical data

Encode Independent Variables: Giúp chúng ta convert một cột chứa các String thành vector 0 & 1

  • Xử dụng ColumnTransformer class và OneHotEncoder của sklearn.
One-hot code
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

Tạo một tuple (‘encoder’ encoding transformation, instance của class OneHotEncoder, [cols muốn transform) và các cols khác bạn không muốn làm gì tới nó thì có thể dùng remainder=”passthrough” để bỏ qua chúng.

ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [0])] , remainder="passthrough" )

Fit và transform với input = X và instance ct của class ColumnTransformer

#fit and transform with input = X
#np.array: need to convert output of fit_transform() from matrix to np.array
X = np.array(ct.fit_transform(X))

Sau khi converting ta được France = [1.0,0.0,0.0] những là đã được one-hot.

Encode Dependent Variables: Nghĩa là chúng ta phải mã hóa các nhãn đầu ra cho máy hiểu.

  • Sử dụng Label Encoder để mã hóa các nhãn
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
#output of fit_transform of Label Encoder is already a Numpy Array
y = le.fit_transform(y)

#y = [0 1 0 0 1 1 0 1 0 1]

Splitting Training set và Test set

  • Sử dụng train_test_split của Sklearn-Model Selection để cắt dữ liệu train và test.
  • Sử dụng tham số: test_size=… để chia dữ liệu tập test trên toàn bộ dữ liệu.
  • random_state = 1: Giúp sử dụng bộ random có sẵn của python.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 1)

Feature Scaling

Tại sao lại xảy ra FS: Khi mà chúng ta khai phá dữ liệu thì có thể có một số feature có độ lớn hơn hẳn các feature khác do vậy features nhỏ hơn chắc chắn sẽ bị bỏ qua khi chúng ta thực hiện ML Model.

# Note 1: FS không cần áp dụng cho Multi-Regression models vì khi y dự đoán = b0 + b1*x1 + b2*x2 + … + bn*xn thì khi đó (b0, b1, …, bn) là các hệ số để bù lại cho việc chênh lệnh do vậy không cần FS.

# Note 2: Đối với các Categorical Features Encoding cũng không cần áp dụng FS.

Feature Scaling.

#Note3: FS phải được thực hiện sau khi splitting Training và Test sets. Do nếu chúng ta sử dụng FS trước khi splitting training & test sets thì dữ liệu sẽ bị mất đi tính đúng.

Vậy làm sao để feature scaling.

Có 2 kĩ thuật để làm điều này là:

  • Standardisation: Biến đổi dữ liệu sao cho giá trị trung bình là 0 và standard deviation là 1.
Bộ dữ liệu bên trên

Trên dữ liệu này bạn có thể thấy số Age và Salary có độ chênh lệnh nhau khá nhiều do vậy dữ liệu của Age có thể không được sử dụng trong model. Do vậy chúng ta cần chuẩn hóa dữ liệu đưa chúng về số nhỏ hơn và vẫn đảm bảo tính tương quan của dữ liệu.

Công thức Standardisation

Bạn có thể sử dụng StandardScaler của sklearn.preprocessing để Std cho dữ liệu.

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train[:,3:] = sc.fit_transform(X_train[:,3:])

#only use Transform to use the SAME scaler as the Training Set
X_test[:,3:] = sc.transform(X_test[:,3:])
  • Normalisation: Làm cho tập dữ liệu giao động trong khoảng từ 0 đến 1.
Công thức normalisation

Bài viết liên quan:

Gradient Descent và Cost
Phương pháp lựa chọn feature trong Machine Learning.
Ứng dụng CNN trong xử lý hình ảnh.
Sử dụng K-fold validation đánh giá model hiệu quả hơn.
GDA và Naive Bayes trong machine learing
Pipeline trong machine learning
Xử lý các giá trị ngoại lai.
Mô hình Linear regression
Phân loại machine
Phân loại các thuật toán trong Machine Learning
main banner
Mở đầu về Machine Learning
Hướng dẫn cài đặt và active Office 2013

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

4. KIỂM THỬ VÀ TRIỂN KHAI HỆ THỐNG

2. PHÂN TÍCH VÀ ĐẶC TẢ HỆ THỐNG

3. THIẾT KẾ HỆ THỐNG

1. TỔNG QUAN KIẾN THỨC THỰC HÀNH TRIỂN KHAI DỰ ÁN CÔNG NGHỆ THÔNG TIN

Hướng dẫn tự cài đặt n8n comunity trên CyberPanel, trỏ tên miền

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×