赛捷软件论坛's Archiver

vicky.yu 发表于 2022-9-13 10:05

机器学习 - 多元回归

多元回归(Multiple Regression)
多元回归就像线性回归一样,但是具有多个独立值,这意味着我们试图基于两个或多个变量来预测一个值。

请看下面的数据集,其中包含了一些有关汽车的信息。

Car        Model        Volume        Weight        CO2
Toyota        Aygo        1000        790        99
Mitsubishi        Space Star        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 对象。

此文件仅用于测试目的,您可以在此处下载:cars.csv

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)
现在,我们有了一个回归对象,可以根据汽车的重量和排量预测 CO2 值:

# 预测重量为 2300kg、排量为 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)

# 预测重量为 2300kg、排量为 1300ccm 的汽车的二氧化碳排放量:

predictedCO2 = regr.predict([[2300, 1300]])

print(predictedCO2)
结果:
[107.2087328]
运行实例
我们预测,配备 1.3 升发动机,重量为 2300 千克的汽车,每行驶 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_)
结果:
[0.00755095 0.00780526]
运行实例
结果解释
结果数组表示重量和排量的系数值。

Weight: 0.00755095
Volume: 0.00780526
这些值告诉我们,如果重量增加 1g,则 CO2 排放量将增加 0.00755095g。

如果发动机尺寸(容积)增加 1 ccm,则 CO2 排放量将增加 0.00780526g。

我认为这是一个合理的猜测,但还是请进行测试!

我们已经预言过,如果一辆配备 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)

predictedCO2 = regr.predict([[3300, 1300]])

print(predictedCO2)
结果:
[114.75968007]
运行实例
我们已经预测,配备 1.3 升发动机,重量为 3.3 吨的汽车,每行驶 1 公里,就会释放约 115 克二氧化碳。

这表明 0.00755095 的系数是正确的:

107.2087328 + (1000 * 0.00755095) = 114.75968
多项式回归
缩放
Python 参考手册
Python 实例
Python 测验

W3School 简体中文版提供的内容仅用于培训和测试,不保证内容的正确性。通过使用本站内容随之而来的风险与本

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.