机器学习(多元线性回归)

1.与简单线性回归的区别
多个自变量(x)

2.多元回归模型
y= β0+ β1*x1+ β2*x2+……..+ βp*xp+e
其中 β1, β2,… βp, β0是参数
e是误差值

3.多元回归方程
E(y)= β0+ β1*x1+ β2*x2+……..+ βp*xp

4.估计多元回归方程
y=b0+b1*x1+b2*x2+……+bp*xp

代码实现:
自变量只为数值型:

数据文件:
机器学习(多元线性回归)_第1张图片

# -*- coding:utf-8 -*-
   #导入模块函数将数据集转化格式
from numpy import genfromtxt
import numpy as np   #导入模块numpy,中间需要用到矩阵的运算
from sklearn import datasets,linear_model  #导入数据集,并且导入线性回归模型函数


dataPath = r"E:\demo_py\python\machine_learning\MLR_1.csv"  #初始化数据集的文件路径
delivaryData = np.genfromtxt(dataPath,delimiter=',')  #将数据集文件中的数据转换为矩阵形式

print("data")
print(delivaryData)

X = delivaryData[:,:-1]  #提取数据集中所有行,并且除了倒数第一列以外的数据项
Y = delivaryData[:,-1]  #提取数据集中所有行,并且只有倒数第一列的数据项

print("特征矩阵")
print(X)
print("标记矩阵")
print(Y)

regr = linear_model.LinearRegression()  #创建线性回归模型对象

regr.fit(X,Y)  #将特征矩阵和标记矩阵传入模型器中训练模型

print("x的系数:",regr.coef_)   #输出模型的有关x的参数,b1,b2...
print("截距:",regr.intercept_)  #输出线性模型中的截距,b0

predict_x = [[102,6],]  #给出测试矩阵
predict_y = regr.predict(predict_x)  #预测
print("预测结果:",predict_y)

运行结果:

data
[[ 100.     4.     9.3]
 [  50.     3.     4.8]
 [ 100.     4.     8.9]
 [ 100.     2.     6.5]
 [  50.     2.     4.2]
 [  80.     2.     6.2]
 [  75.     3.     7.4]
 [  65.     4.     6. ]
 [  90.     3.     7.6]
 [  90.     2.     6.1]]
特征矩阵
[[ 100.    4.]
 [  50.    3.]
 [ 100.    4.]
 [ 100.    2.]
 [  50.    2.]
 [  80.    2.]
 [  75.    3.]
 [  65.    4.]
 [  90.    3.]
 [  90.    2.]]
标记矩阵
[ 9.3  4.8  8.9  6.5  4.2  6.2  7.4  6.   7.6  6.1]
x的系数: [ 0.0611346   0.92342537]
截距: -0.868701466782
预测结果: [ 10.90757981]

数据自变量中带有类别值,将其转换为数值型:
机器学习(多元线性回归)_第2张图片

代码实现:

# -*- coding:utf-8 -*-
   #导入模块函数将数据集转化格式
from numpy import genfromtxt
import numpy as np   #导入模块numpy,中间需要用到矩阵的运算
from sklearn import datasets,linear_model  #导入数据集,并且导入线性回归模型函数


dataPath = r"E:\demo_py\python\machine_learning\MLR_2.csv"  #初始化数据集的文件路径
delivaryData = np.genfromtxt(dataPath,delimiter=',')  #将数据集文件中的数据转换为矩阵形式

print("data")
print(delivaryData)

X = delivaryData[:,:-1]  #提取数据集中所有行,并且除了倒数第一列以外的数据项
Y = delivaryData[:,-1]  #提取数据集中所有行,并且只有倒数第一列的数据项

print("特征矩阵")
print(X)
print("标记矩阵")
print(Y)

regr = linear_model.LinearRegression()  #创建线性回归模型对象

regr.fit(X,Y)  #将特征矩阵和标记矩阵传入模型器中训练模型

print("x的系数:",regr.coef_)   #输出模型的有关x的参数,b1,b2...
print("截距:",regr.intercept_)  #输出线性模型中的截距,b0

predict_x = [[102,6001],]  #给出测试矩阵
predict_y = regr.predict(predict_x)  #预测
print("预测结果:",predict_y)

运行结果:

data
[[ 100.     4.     0.     1.     0.     9.3]
 [  50.     3.     1.     0.     0.     4.8]
 [ 100.     4.     0.     1.     0.     8.9]
 [ 100.     2.     0.     0.     1.     6.5]
 [  50.     2.     0.     0.     1.     4.2]
 [  80.     2.     0.     1.     0.     6.2]
 [  75.     3.     0.     1.     0.     7.4]
 [  65.     4.     1.     0.     0.     6. ]
 [  90.     3.     1.     0.     0.     7.6]]
特征矩阵
[[ 100.    4.    0.    1.    0.]
 [  50.    3.    1.    0.    0.]
 [ 100.    4.    0.    1.    0.]
 [ 100.    2.    0.    0.    1.]
 [  50.    2.    0.    0.    1.]
 [  80.    2.    0.    1.    0.]
 [  75.    3.    0.    1.    0.]
 [  65.    4.    1.    0.    0.]
 [  90.    3.    1.    0.    0.]]
标记矩阵
[ 9.3  4.8  8.9  6.5  4.2  6.2  7.4  6.   7.6]
x的系数: [ 0.05553544  0.69257631 -0.17013278  0.57040007 -0.40026729]
截距: 0.199956889119
预测结果: [ 9.61976203]

你可能感兴趣的:(机器学习)