Python 机器学习多元回归



  • 多元回归

    多元回归就像线性回归一样,但是具有多个独立值,这意味着我们试图基于两个或多个变量来预测一个值。看一下下面的数据集,其中包含有关汽车的一些信息。
    Car Model Volume Weight CO2
    Toyota Aygo 1000 790 99
    Mitsubishi Space 1200 1160 95
    Skoda Citigo 1000 929 95
    Fiat 500 900 865 90
    Mini Cooper 1500 1140 105
    VW Up! 1000 929 105
    Skoda Fabia 1400 1109 90
    Mercedes A-Class 1500 1365 92
    Ford Fiesta 1500 1112 98
    Audi A1 1600 1150 99
    Hyundai I20 1100 980 99
    Suzuki Swift 1300 990 101
    Ford Fiesta 1000 1112 99
    Honda Civic 1600 1252 94
    Hundai I30 1600 1326 97
    Opel Astra 1600 1330 97
    BMW 1 1600 1365 99
    Mazda 3 2200 1280 104
    Skoda Rapid 1600 1119 104
    Ford Focus 2000 1328 105
    Ford Mondeo 1600 1584 94
    Opel Insignia 2000 1428 99
    Mercedes C-Class 2100 1365 99
    Skoda Octavia 1600 1415 99
    Volvo S60 2000 1415 99
    Mercedes CLA 1500 1465 102
    Audi A4 2000 1490 104
    Audi A6 2000 1725 114
    Volvo V70 1600 1523 109
    BMW 5 2000 1705 114
    Mercedes E-Class 2100 1605 115
    Volvo XC70 2000 1746 117
    Ford B-Max 1600 1235 104
    BMW 2 1600 1390 108
    Opel Zafira 1600 1405 109
    Mercedes SLK 2500 1395 120
    我们可以根据引擎的大小预测汽车的二氧化碳排放量,但是通过多元回归,我们可以引入更多变量,例如汽车的重量,以使预测更加准确。
  • 它是如何工作的?

    在Python中,我们有一些模块可以为我们完成工作。首先导入Pandas模块。
    import Pandas
    
    Pandas模块允许我们读取csv文件并返回一个DataFrame对象。
    df = pandas.read_csv("cars.csv")
    
    然后列出独立值并调用此变量X。
    将相关值放入名为的变量中y。
    X = df[['Weight', 'Volume']]
    y = df['CO2']
    
    提示: 通常,将独立值列表命名为大写X,将相关值列表命名为小写y。
    我们将使用sklearn模块中的一些方法,因此我们也必须导入该模块:
    from sklearn import linear_model
    
    在sklearn模块中,我们将使用LinearRegression()方法创建线性回归对象。该对象有一个称为fit()的方法,该方法将独立值和从属值作为参数,并用描述该关系的数据填充回归对象:
    regr = linear_model.LinearRegression()
    regr.fit(X, y)
    
    现在我们有了一个回归对象,可以根据汽车的重量和体积预测二氧化碳值:
    #predict the CO2 emission of a car where the weight is 2300g, and the volume is 1300ccm:
    predictedCO2 = regr.predict([[2300, 1300]])
    
    请参阅整个示例:
    import pandas
    from sklearn import linear_model
    
    df = pandas.read_csv("cars.csv")
    
    X = df[['Weight', 'Volume']]
    y = df['CO2']
    
    regr = linear_model.LinearRegression()
    regr.fit(X, y)
    
    #predict the CO2 emission of a car where the weight is 2300g, and the volume is 1300ccm:
    predictedCO2 = regr.predict([[2300, 1300]])
    
    print(predictedCO2)
    
    输出如下::
    ml
    
    我们预测,配备1.3升发动机,重2.3千克的汽车,每行驶1公里,就会释放约107克的二氧化碳。
  • 系数

    系数是描述与未知变量的关系的因子。
    示例:如果x是变量, 2x则为x两次。x是未知变量,数字2是系数。
    在这种情况下,我们可以要求重量相对于CO2的系数值,以及体积相对于CO2的系数值。我们得到的答案告诉我们,如果我们增加或减少其中一个独立值,将会发生什么。
    打印回归对象的系数值:
    import pandas
    from sklearn import linear_model
    
    df = pandas.read_csv("cars.csv")
    
    X = df[['Weight', 'Volume']]
    y = df['CO2']
    
    regr = linear_model.LinearRegression()
    regr.fit(X, y)
    
    print(regr.coef_)
    
    输出如下所示:
    ml
    
    结果说明:::
    结果数组表示权重和值的系数值。
    • Weight:0.00755095
    • Volume:0.00780526
    这些值告诉我们,如果重量增加1g,则CO2排放量增加0.00755095g。并且,如果发动机尺寸(容积)增加1 ccm,则CO2排放量将增加0.00780526 g。我认为这是一个合理的猜测,但请进行测试!我们已经预测到,如果配备1300ccm发动机的汽车重2300克,则二氧化碳排放量将约为107克。如果我们增加1000g的重量会怎样?
    复制之前的示例,但是将权重从2300更改为3300:
    import pandas
    from sklearn import linear_model
    
    df = pandas.read_csv("cars.csv")
    
    X = df[['Weight', 'Volume']]
    y = df['CO2']
    
    regr = linear_model.LinearRegression()
    regr.fit(X, y)
    
    #predict the CO2 emission of a car where the weight is 2300g, and the volume is 1300ccm:
    predictedCO2 = regr.predict([[3300, 1300]])
    
    print(predictedCO2)
    
    输出如下所示:
    ml
    
    我们已经预测,配备1.3升发动机,重量为3.3千克的汽车,每行驶1公里,就会释放约115克二氧化碳。 这表明0.00755095的系数是正确的:
    107.2087328 +(1000 * 0.00755095)= 114.75968