Python 机器学习-度量尺

  • 度量尺度特征

    当您的数据具有不同的值,甚至具有不同的度量单位时,可能很难比较它们。与米相比,公斤是多少?还是海拔比时间?这个问题的答案是尺寸。我们可以将数据缩放为易于比较的新值。看看下表,它与我们在多元回归一章中使用的数据集相同 ,但是这次,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)
    输出如下::
    ml
    请注意,前两个值是-2.1和-1.59,与我们的计算相对应:
  • 预测二氧化碳(CO2)值

    “多元回归”一章的任务是在仅知道汽车的重量和体积的情况下预测其排放的二氧化碳。缩放数据集后,在预测值时必须使用缩放比例:
    预测一辆重2300公斤的1.3升汽车的二氧化碳排放量:
    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)
    输出如下::
    ml
    我们预测,配备1.3升发动机,重2.3千克的汽车,每行驶1公里,就会释放约107克的二氧化碳。