PML之多元回归

Posted 月疯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PML之多元回归相关的知识,希望对你有一定的参考价值。

1、多元回归(Multiple Regression)

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

列子:car表示汽车类型,model表示模式,volume配置发动机的容量,weight汽车的重量,co2释放二氧化碳的量

CarModelVolumeWeightCO2
ToyotaAygo100079099
MitsubishiSpace Star1200116095
SkodaCitigo100092995
Fiat50090086590
MiniCooper15001140105
VWUp!1000929105
SkodaFabia1400110990
MercedesA-Class1500136592
FordFiesta1500111298
AudiA11600115099
HyundaiI20110098099
SuzukiSwift1300990101
FordFiesta1000111299
HondaCivic1600125294
HundaiI301600132697
OpelAstra1600133097
BMW11600136599
Mazda322001280104
SkodaRapid16001119104
FordFocus20001328105
FordMondeo1600158494
OpelInsignia2000142899
MercedesC-Class2100136599
SkodaOctavia1600141599
VolvoS602000141599
MercedesCLA15001465102
AudiA420001490104
AudiA620001725114
VolvoV7016001523109
BMW520001705114
MercedesE-Class21001605115
VolvoXC7020001746117
FordB-Max16001235104
BMW216001390108
OpelZafira16001405109
MercedesSLK25001395120
import pandas
from sklearn import linear_model

df = pandas.read_csv("cars.csv")
#x有俩个维度,重量和发动机容量
X = df[['Weight', 'Volume']]
#y表示释放二氧化碳的量
y = df['CO2']
#调用线性模型
regr = linear_model.LinearRegression()
#进行线性拟合
regr.fit(X, y)

#预测2300kg的汽车重量,1300cm的发动机容量,行驶1公里可以释放的二氧化碳
predictedCO2 = regr.predict([[2300, 1300]])
#打印预测结果
print(predictedCO2)
#打印参数
print(regr.coef_)
[107.2087328]#释放的二氧化碳
[0.00755095 0.00780526]#表示重量增加1公斤,释放二氧化碳是0.00755095,容量增加1升,释放的二氧化碳是0.00780526

重量:0.00755095体积:0.00780526

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

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

2、标准化处理

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

z = (x - u) / s

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

列子:

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

df = pandas.read_csv("cars2.csv")

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

#标准化处理

scaledX = scale.fit_transform(X)

print(scaledX)

结果:

[[-2.10389253 -1.59336644]
 [-0.55407235 -1.07190106]
 [-1.52166278 -1.59336644]
 [-1.78973979 -1.85409913]
 [-0.63784641 -0.28970299]
 [-1.52166278 -1.59336644]
 [-0.76769621 -0.55043568]
 [ 0.3046118  -0.28970299]
 [-0.7551301  -0.28970299]
 [-0.59595938 -0.0289703 ]
 [-1.30803892 -1.33263375]
 [-1.26615189 -0.81116837]
 [-0.7551301  -1.59336644]
 [-0.16871166 -0.0289703 ]
 [ 0.14125238 -0.0289703 ]
 [ 0.15800719 -0.0289703 ]
 [ 0.3046118  -0.0289703 ]
 [-0.05142797  1.53542584]
 [-0.72580918 -0.0289703 ]
 [ 0.14962979  1.01396046]
 [ 1.2219378  -0.0289703 ]
 [ 0.5685001   1.01396046]
 [ 0.3046118   1.27469315]
 [ 0.51404696 -0.0289703 ]
 [ 0.51404696  1.01396046]
 [ 0.72348212 -0.28970299]
 [ 0.8281997   1.01396046]
 [ 1.81254495  1.01396046]
 [ 0.96642691 -0.0289703 ]
 [ 1.72877089  1.01396046]
 [ 1.30990057  1.27469315]
 [ 1.90050772  1.01396046]
 [-0.23991961 -0.0289703 ]
 [ 0.40932938 -0.0289703 ]
 [ 0.47215993 -0.0289703 ]
 [ 0.4302729   2.31762392]]

完整例子:

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

df = pandas.read_csv("cars2.csv")

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

scaledX = scale.fit_transform(X)

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

scaled = scale.transform([[2300, 1.3]])

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

 

以上是关于PML之多元回归的主要内容,如果未能解决你的问题,请参考以下文章

PML之多项式拟合

多元线性回归的计算

求python支持向量机多元回归预测代码

统计科学之讲讲逐步回归

matlab多元线性回归

如何用 Python 和 sklearn 编写多元对数回归?