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)
输出如下::我们预测,配备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_)
输出如下所示:结果说明:::结果数组表示权重和值的系数值。- 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)
输出如下所示:我们已经预测,配备1.3升发动机,重量为3.3千克的汽车,每行驶1公里,就会释放约115克二氧化碳。 这表明0.00755095的系数是正确的:107.2087328 +(1000 * 0.00755095)= 114.75968