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í các đơn vị đo lường khác nhau, việc so sánh chúng có thể khó khăn. Kilôgam so với mét là gì? 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 xem bảng bên dưới, đây chính là 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).
Xe hơi | Người mẫu | Âm lượng | Cân nặng | CO2 |
Toyota | ôi trời | 1.0 | 790 | 99 |
Mitsubishi | Ngôi sao vũ trụ | 1.2 | 1160 | 95 |
Skoda | Citigo | 1.0 | 929 | 95 |
tiền pháp định | 500 | 0,9 | 865 | 90 |
nhỏ | 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 | lễ hội | 1,5 | 1112 | 98 |
Audi | A1 | 1.6 | 1150 | 99 |
Huyndai | I20 | 1.1 | 980 | 99 |
Suzuki | Nhanh | 1.3 | 990 | 101 |
Ford | lễ hội | 1.0 | 1112 | 99 |
Honda | dân sự | 1.6 | 1252 | 94 |
Hundai | I30 | 1.6 | 1326 | 97 |
Opel | Astra | 1.6 | 13:30 | 97 |
xe BMW | 1 | 1.6 | 1365 | 99 |
Mazda | 3 | 2.2 | 1280 | 104 |
Skoda | Nhanh | 1.6 | 1119 | 104 |
Ford | Tập trung | 2.0 | 1328 | 105 |
Ford | Mondeo | 1.6 | 1584 | 94 |
Opel | phù hiệu | 2.0 | 1428 | 99 |
Mercedes | Hạng C | 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 | Lớp điện tử | 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 tập 1.0 với trọng 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 được so sánh 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 gọi là tiêu 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
Trong đó z
là giá trị mới, x
là giá trị ban đầu, 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 - 1292.23 ) / 238.74 = -2.1
Nếu bạn lấy cột âm lượng từ tập dữ liệu ở trên, giá trị đầu tiên là 1,0 và giá trị tỷ lệ sẽ là:
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 cần phải thực hiện việc này một cách thủ công, mô-đun sklearn của Python có một phương thức tên là 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.
Ví 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("data.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 tính toán 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ừ ô 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 dự đoán các giá trị:
Ví dụ
Dự đoán lượng khí thải CO2 từ ô 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("data.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]