Menu
CoddyTech

Co giãn Min-Max

Thuộc phần Thống kê cho machine learning trong hành trình Machine Learning của Coddy. Bài học 48 trên 64.

Chuẩn hóa min-max giúp mọi đặc trưng có tiếng nói công bằng: trong mỗi cột, giá trị nhỏ nhất trở thành 0, giá trị lớn nhất trở thành 1, các giá trị còn lại nằm giữa hai mức này.

Thêm một người 40 tuổi có thu nhập $80,000, sau đó chuẩn hóa cả bốn giá trị:

Độ tuổi và thu nhập của bốn khách hàng dưới dạng bảng, một mũi tên, rồi đến bảng tương tự sau khi chuẩn hóa: trong mỗi cột, giá trị nhỏ nhất trở thành 0.00 và giá trị lớn nhất trở thành 1.00, được tô màu đậm hơn, các giá trị khác nằm giữa hai mức này

Broadcasting thực hiện việc này trên một dòng, với giá trị nhỏ nhất và khoảng biến thiên riêng của từng cột:

X = np.array([[25, 52000],
              [61, 53000],
              [26, 55000],
              [40, 80000]])
lows = X.min(axis=0)
highs = X.max(axis=0)
scaled = (X - lows) / (highs - lows)

Giờ thì tuổi cũng được tính. Hàng xóm gần nhất của khách hàng 0 không còn là người 61 tuổi nữa:

Các khách hàng đã được chuẩn hóa dưới dạng các chấm trên một hình vuông từ 0 đến 1, với các đường nối từ khách hàng 0: người 26 tuổi ở gần nhất, cách 0.11, người 61 tuổi cách 1.00, người có thu nhập $80,000 cách 1.08

Một giá trị cực trị trở thành 1 và ép các giá trị còn lại về gần 0, vì vậy chuẩn hóa min-max phù hợp với các cột không có giá trị ngoại lệ.

challenge icon

Thử thách

Trung bình

Một nhà rang xay ghép những loại cà phê có cách pha giống nhau. Mỗi hàng trong beans là một loại cà phê: nhiệt độ nước (C), thời gian pha (s) và lượng caffeine (mg). Chương trình đọc các vị trí i và j; hàm distance(a, b) có sẵn dùng để đo khoảng cách giữa hai mẫu.

  1. Chuẩn hóa beans theo min-max.
  2. In ra Every column from 0 to 1:, sau đó in bảng đã chuẩn hóa với 2 chữ số thập phân.
  3. In khoảng cách giữa chúng trước và sau khi chuẩn hóa, như bên dưới.

Với ba loại cà phê khác, ở vị trí 0 và 1:

Every column from 0 to 1:
[[1.   1.   0.67]
 [0.5  0.5  0.  ]
 [0.   0.   1.  ]]
Coffees 0 and 1: 63.28 apart before scaling, 0.97 after

Tự làm thử

import numpy as np


# Trả về khoảng cách giữa hai mẫu (từ Why Scale Features)
def distance(a, b):
    return np.sqrt(((a - b) ** 2).sum())


# Mỗi loại cà phê một hàng: nhiệt độ nước tính bằng C, thời gian pha tính bằng giây, lượng caffeine tính bằng mg
beans = np.array([[88, 120, 60],
                  [96, 300, 30],
                  [86, 90, 70],
                  [94, 240, 120],
                  [90, 180, 90],
                  [84, 60, 50]])
i = int(input())
j = int(input())

# Viết code bên dưới
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Thống kê cho machine learning

Tự luyện tập: Trình biên dịch Python online