度量尺度特征
当您的数据具有不同的值,甚至具有不同的度量单位时,可能很难比较它们。与米相比,公斤是多少?还是海拔比时间?这个问题的答案是尺寸。我们可以将数据缩放为易于比较的新值。看看下表,它与我们在
多元回归一章中使用的数据集相同 ,但是这次,Volume列包含以升为单位的值,而不是ccm(1.0而不是1000)。
Car |
Model |
Volume |
Weight |
CO2 |
Toyota |
Aygo |
1.0 |
790 |
99 |
Mitsubishi |
Space |
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.6 |
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 |
很难将体积1.0与重量790进行比较,但是如果将它们都缩放为可比较的值,则可以轻松地看到一个值与另一个值之间的比较。缩放数据有多种方法,在本教程中,我们将使用一种称为标准化的方法。标准化方法使用以下公式:
z = (x - u) / s
其中z是新值,x是原始值, u平均值,s是标准偏差。 如果从上面的数据集中获取Weight列,则第一个值为790,缩放后的值为:
(790 - 1292.23) / 238.74 = - 2.1
如果从上面的数据集中获取“Volume”列,则第一个值为1.0,缩放后的值为:
(1.0 - 1.61) / 0.38 = -1.59
现在,您可以将-2.1与-1.59相比较,而不是将790与1.0相比较。
您不必手动执行此操作,Python sklearn模块有一个称为StandardScaler()的方法 ,该方法返回带有转换数据集方法的Scaler对象。
缩放“Weight”和“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)
输出如下::
请注意,前两个值是-2.1和-1.59,与我们的计算相对应: