Học máy - Điều chỉnh
- Trang trước Phân回归
- Trang tiếp theo Huấn luyện/kiểm tra
特征缩放(Scale Features)
当您的数据拥有不同的值,甚至使用不同的度量单位时,可能很难比较它们。与米相比,公斤是多少?或者海拔比较时间呢?
这个问题的答案是缩放。我们可以将数据缩放为易于比较的新值。
请看下表,它与我们在Phân回归在第一章中使用的数据集相同,但是这次,Volume 列包含的单位是升,而不是 ccm(1.0 而不是 1000)。
Car | Model | Volume | Weight | CO2 |
---|---|---|---|---|
Toyota | Aygo | 1.0 | 790 | 99 |
Mitsubishi | Space Star | 1.2 | 1160 | 95 |
Skoda | Citigo | 1.0 | 929 | 95 |
Fiat | 500 | 0.9 | 865 | 90 |
Mini | Cooper | 1.5 | 1140 | 105 |
VW | Up! | 1.0 | 929 | 105 |
Skoda | Fabia | 1.4 | 1109 | 90 |
Mercedes | A-Class | 1.5 | 1365 | 92 |
Ford | Fiesta | 1.5 | 1112 | 98 |
Audi | A1 | 1.6 | 1150 | 99 |
Hyundai | I20 | 1.1 | 980 | 99 |
Suzuki | Swift | 1.3 | 990 | 101 |
Ford | Fiesta | 1.0 | 1112 | 99 |
Honda | Civic | 1.6 | 1252 | 94 |
Hundai | I30 | 1.6 | 1326 | 97 |
Opel | Astra | 1.6 | 1330 | 97 |
BMW | 1 | 1.6 | 1365 | 99 |
Mazda | 3 | 2.2 | 1280 | 104 |
Skoda | Rapid | 1.6 | 1119 | 104 |
Ford | Focus | 2.0 | 1328 | 105 |
Ford | Mondeo | 1.6 | 1584 | 94 |
Opel | Insignia | 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.7 | 1523 | 109 |
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 |
BMW | 2 | 1.6 | 1390 | 108 |
Opel | Zafira | 1.6 | 1405 | 109 |
Mercedes | SLK | 2.5 | 1395 | 120 |
Khó khăn để so sánh dung tích 1.0 với trọng lượng 790, nhưng nếu chúng ta đều điều chỉnh chúng thành giá trị có thể so sánh, chúng ta có thể dễ dàng thấy được số lượng một giá trị so với giá trị khác.
Có nhiều phương pháp điều chỉnh dữ liệu, trong hướng dẫn này, chúng ta sẽ sử dụng phương pháp gọi là chuẩn hóa (standardization).
Phương pháp chuẩn hóa sử dụng công thức sau:
z = (x - u) / s
Trong đó z là giá trị mới, x là giá trị ban đầu, u là giá trị trung bình, s là độ lệch chuẩn.
Nếu bạn lấy dữ liệu từ tập dữ liệu trên weight cột, giá trị đầu tiên là 790, giá trị đã được điều chỉnh là:
(790 - 1292.23) / 238.74 = -2.1
Nếu bạn lấy dữ liệu từ tập dữ liệu trên volume cột, giá trị đầu tiên là 1.0, giá trị đã được điều chỉnh là:
(1.0 - 1.61) / 0.38 = -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 cần phải thực hiện thủ công thao tác này, mô-đun sklearn của Python có một tên gọi là StandardScaler()
cách thức, cách này trả về đối tượng Scaler có phương pháp chuyển đổi dữ liệu tập.
Ví dụ
Điều chỉnh tất cả các giá trị trong cột Weight và Volume:
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ả:
Xin lưu ý, hai giá trị đầu tiên là -2.1 và -1.59, phù hợp với tính toán của chúng ta:
[[-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
Phân回归Mục tiêu của chương này là dự đoán lượng phát thải CO2 của một chiếc xe chỉ biết trọng lượng và dung tích.
Sau khi thu nhỏ dữ liệu, bạn phải sử dụng tỷ lệ thu nhỏ để dự đoán giá trị dự báo:
Ví dụ
Dự đoán lượng phát thải CO2 của một chiếc xe 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]
- Trang trước Phân回归
- Trang tiếp theo Huấn luyện/kiểm tra