Học máy - Quy mô
Tính năng quy mô
Khi dữ liệu của bạn có các giá trị khác nhau và thậm chí là các đơn vị đo lường khác nhau, có thể khó so sánh chúng. Két là gì so với mét? Hay độ cao so với thời gian?
Câu trả lời cho vấn đề này là mở rộng quy mô. Chúng tôi có thể chia tỷ lệ dữ liệu thành các giá trị mới dễ so sánh hơn.
Hãy nhìn vào bảng dưới đây, nó là cùng một tập dữ liệu mà chúng ta đã sử dụng trong chương hồi quy bội , nhưng lần này cột thể tích chứa các giá trị tính bằng lít thay vì cm 3 (1,0 thay vì 1000).
Tệp chỉ dành cho mục đích thử nghiệm, bạn có thể tải xuống tại đây: Cars2.csv
Xe ô tô | Mô hình | Âm lượng | Trọng lượng | CO2 |
Toyota | Aygo | 1,0 | 790 | 99 |
Mitsubishi | Ngôi sao vũ trụ | 1,2 | 1160 | 95 |
Skoda | Citigo | 1,0 | 929 | 95 |
Fiat | 500 | 0,9 | 865 | 90 |
Mini | Cooper | 1,5 | 1140 | 105 |
VW | Hướng lên! | 1,0 | 929 | 105 |
Skoda | Fabia | 1,4 | 1109 | 90 |
Mercedes | Một lớp học | 1,5 | 1365 | 92 |
Ford | Fiesta | 1,5 | 1112 | 98 |
Audi | A1 | 1,6 | 1150 | 99 |
Huyndai | I20 | 1.1 | 980 | 99 |
Suzuki | Nhanh | 1,3 | 990 | 101 |
Ford | Fiesta | 1,0 | 1112 | 99 |
Honda | Civic | 1,6 | 1252 | 94 |
Huyndai | I30 | 1,6 | 1326 | 97 |
Opel | Astra | 1,6 | 1330 | 97 |
xe BMW | 1 | 1,6 | 1365 | 99 |
Mazda | 3 | 2,2 | 1280 | 104 |
Skoda | Nhanh | 1,6 | 1119 | 104 |
Ford | Tiêu điểm | 2.0 | 1328 | 105 |
Ford | Mondeo | 1,6 | 1584 | 94 |
Opel | Phù hiệu | 2.0 | 1428 | 99 |
Mercedes | C-Class | 2.1 | 1365 | 99 |
Skoda | Octavia | 1,6 | 1415 | 99 |
Volvo | S60 | 2.0 | 1415 | 99 |
Mercedes | CLA | 1,5 | 1465 | 102 |
Audi | A4 | 2.0 | 1490 | 104 |
Audi | A6 | 2.0 | 1725 | 114 |
Volvo | V70 | 1,6 | 1523 | 109 |
xe BMW | 5 | 2.0 | 1705 | 114 |
Mercedes | E-Class | 2.1 | 1605 | 115 |
Volvo | XC70 | 2.0 | 1746 | 117 |
Ford | B-Max | 1,6 | 1235 | 104 |
xe BMW | 2 | 1,6 | 1390 | 108 |
Opel | Zafira | 1,6 | 1405 | 109 |
Mercedes | SLK | 2,5 | 1395 | 120 |
Có thể khó so sánh khối lượng 1.0 với khối lượng 790, nhưng nếu chúng ta chia cả hai thành các giá trị có thể so sánh được, chúng ta có thể dễ dàng thấy giá trị này bằng bao nhiêu so với giá trị kia.
Có nhiều phương pháp khác nhau để chia tỷ lệ dữ liệu, trong hướng dẫn này, chúng tôi sẽ sử dụng một phương pháp được gọi là chuẩn hóa.
Phương pháp tiêu chuẩn hóa sử dụng công thức này:
z = (x - u) / s
Đâu z
là giá trị mới,
x
là giá trị gốc,
u
là giá trị trung bình và s
là độ lệch chuẩn.
Nếu bạn lấy cột trọng số từ tập dữ liệu ở trên, giá trị đầu tiên là 790 và giá trị được chia tỷ lệ sẽ là:
(790 - ) / = -2.1
Nếu bạn lấy cột khối lượng từ tập dữ liệu ở trên, giá trị đầu tiên là 1,0 và giá trị được chia tỷ lệ sẽ là:
(1.0 - ) / = -1.59
Bây giờ bạn có thể so sánh -2,1 với -1,59 thay vì so sánh 790 với 1,0.
Bạn không phải thực hiện việc này theo cách thủ công, mô-đun sklearn Python có một phương thức được gọi là phương thức StandardScaler()
trả về một đối tượng Scaler với các phương thức để chuyển đổi tập dữ liệu.
Thí dụ
Chia tỷ lệ tất cả các giá trị trong cột Trọng lượng và Khối lượng:
import pandas
from sklearn import linear_model
from
sklearn.preprocessing import StandardScaler
scale = StandardScaler()
df = pandas.read_csv("cars2.csv")
X = df[['Weight', 'Volume']]
scaledX = scale.fit_transform(X)
print(scaledX)
Kết quả:
Lưu ý rằng hai giá trị đầu tiên là -2,1 và -1,59, tương ứng với các phép tính của chúng tôi:
[[-2.10389253 -1.59336644] [-0.55407235 -1.07190106] [-1.52166278 -1.59336644] [-1.78973979 -1.85409913] [-0.63784641 -0.28970299] [-1.52166278 -1.59336644] [-0.76769621 -0.55043568] [ 0.3046118 -0.28970299] [-0.7551301 -0.28970299] [-0.59595938 -0.0289703 ] [-1.30803892 -1.33263375] [-1.26615189 -0.81116837] [-0.7551301 -1.59336644] [-0.16871166 -0.0289703 ] [ 0.14125238 -0.0289703 ] [ 0.15800719 -0.0289703 ] [ 0.3046118 -0.0289703 ] [-0.05142797 1.53542584] [-0.72580918 -0.0289703 ] [ 0.14962979 1.01396046] [ 1.2219378 -0.0289703 ] [ 0.5685001 1.01396046] [ 0.3046118 1.27469315] [ 0.51404696 -0.0289703 ] [ 0.51404696 1.01396046] [ 0.72348212 -0.28970299] [ 0.8281997 1.01396046] [ 1.81254495 1.01396046] [ 0.96642691 -0.0289703 ] [ 1.72877089 1.01396046] [ 1.30990057 1.27469315] [ 1.90050772 1.01396046] [-0.23991961 -0.0289703 ] [ 0.40932938 -0.0289703 ] [ 0.47215993 -0.0289703 ] [ 0.4302729 2.31762392]]
Dự đoán giá trị CO2
Nhiệm vụ trong chương Hồi quy bội là dự đoán lượng khí thải CO2 từ một chiếc ô tô khi bạn chỉ biết trọng lượng và thể tích của nó.
Khi tập dữ liệu được chia tỷ lệ, bạn sẽ phải sử dụng tỷ lệ khi bạn dự đoán các giá trị:
Thí dụ
Dự đoán lượng khí thải CO2 từ một chiếc ô tô 1,3 lít nặng 2300 kg:
import pandas
from sklearn import linear_model
from
sklearn.preprocessing import StandardScaler
scale = StandardScaler()
df = pandas.read_csv("cars2.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
scaledX = scale.fit_transform(X)
regr = linear_model.LinearRegression()
regr.fit(scaledX, y)
scaled =
scale.transform([[2300, 1.3]])
predictedCO2 = regr.predict([scaled[0]])
print(predictedCO2)
Kết quả:
[107.2087328]