多元回归
前面讲了线性回归(线性直线拟合)和 多项式回归(一元二次/三次方程式),今天讲多元回归。
多元回归就像线性回归一样,但是具有多个独立值,这意味着我们试图基于两个或多个变量来预测一个值。
case1
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)