【机器学习②】多元回归

175 阅读2分钟

多元回归

前面讲了线性回归(线性直线拟合)和 多项式回归(一元二次/三次方程式),今天讲多元回归。

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

case1

image.png

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)

根据weight和volume来预测co2排放量。

线性关系

在 sklearn 模块中,我们将使用 LinearRegression() 方法创建一个线性回归对象。

该对象有一个名为 fit() 的方法,该方法将独立值和从属值作为参数,并用描述这种关系的数据填充回归对象:

regr = linear_model.LinearRegression()
regr.fit(X, y)

个人理解:

创建了一个线性回归对象regr,拿数据x,y喂进去变成实例regr,可以再给入x, 预测y

这个就是一个回归模型的应用。

系数

系数是描述与未知变量的关系的因子。

print(regr.coef_)

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

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

总结

这里只是多元回归,有多个变量,细节还是线性/多项


缩放

我的理解:变量归一化,方便比较

缩放数据有多种方法,在本教程中,我们将使用一种称为标准化(standardization)的方法。

标准化方法使用以下公式:

z = (x - u) / s

其中 z 是新值,x 是原始值,u 是平均值,s 是标准差。

Python sklearn 模块有一个名为 StandardScaler() 的方法,该方法返回带有转换数据集方法的 Scaler 对象。


X = df[['Weight', 'Volume']]

scaledX = scale.fit_transform(X)

同样,要预测co2的时候,入参也应该归一化后再输入模型。

import pandas
from sklearn import linear_model
from sklearn.preprocessing import StandardScaler
scale = StandardScaler()

df = pandas.read_csv("./cars.csv")

X = df[['Weight', 'Volume']]
y = df['CO2']

scaledX = scale.fit_transform(X) # 入参X标准化

regr = linear_model.LinearRegression() # 引入线性回归模型
regr.fit(scaledX, y) # 入参去喂模型,完善模型

scaled = scale.transform([[2300, 1.3]]) # 新的参数经过标准化(我理解的这里scale已经有X的信息了)

predictedCO2 = regr.predict([scaled[0]])
print(predictedCO2)