机器学习(十一)岭回归之交通流量预测

简介: (1)线性回归的不足对于一般地线性回归问题,参数的求解采用的是最小二乘法,其目标函数如下:

(1)线性回归的不足

对于一般地线性回归问题,参数的求解采用的是最小二乘法,其目标函数如下:

image.png

参数w的求解,也可以使用如下矩阵方法进行:


image.png

(2)岭回归

岭回归的优化目标:

image.png

对应的矩阵求解方法为:


image.png

 岭回归(ridge regression)是一种专用于共线性数据分析的有偏估计回归方法

 是一种改良的最小二乘估计法,对某些数据的拟合要强于最小二乘法。


(3)sklearn中的岭回归

在sklearn库中,可以使用sklearn.linear_model.Ridge调用岭回归模型,其主要参数有:

• alpha:正则化因子,对应于损失函数中的𝜶

• fit_intercept:表示是否计算截距,

• solver:设置计算参数的方法,可选参数‘auto’、‘svd’、‘sag’等


(4)交通流量预测实例

数据介绍:

数据为某路口的交通流量监测数据,记录全年小时级别的车流量。

实验目的:

根据已有的数据创建多项式特征,使用岭回归模型代替一般的线性模型,对车流量的信息进行多项式回归。

技术路线:sklearn.linear_model.Ridgefrom

sklearn.preprocessing.PolynomialFeatures


数据特征如下:

HR:一天中的第几个小时(0-23)

WEEK_DAY:一周中的第几天(0-6)

DAY_OF_YEAR:一年中的第几天(1-365)

WEEK_OF_YEAR:一年中的第几周(1-53)

TRAFFIC_COUNT:交通流量

全部数据集包含2万条以上数据(21626)


(5)实验过程

(1)建立工程,导入sklearn相关工具包:

import numpy as np
from sklearn.linear_model import Ridge
#通过sklean.linermodel加载岭回归方法
#from sklearn import cross_validation
from sklearn import model_selection
#加载交叉验证模块,加载matplotilib模块
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
#通过..加载..用于创建多项式特征,如ab,a^2,b^2

(2)数据加载

    #2数据加载
    data = np.genfromtxt(r'C:\Users\86493\Desktop\北理工机器学习慕课数据\回归\岭回归.txt', delimiter=',')
    #使用numpy的方法从txt文件中加载数据
    plt.plot(data[:,4])
    #使用plt展示车流量信息,如右图
    plt.show()

(3)数据处理

    #3数据处理
    x = data[:,:4]
    #X用于保存0-4维数据,即属性
    y = data[:,4]
    #y用于保存第4维数据,即车流量
    poly = PolynomialFeatures(9)
    #用于创建最高次数6次方的多项式特征,多次试验后决定采用6次
    x = poly.fit_transform(x)
    #X为创建的多项式特征

(4)划分训练集和测试集

    #4划分训练集和测试集
    train_x, test_x, train_y, test_y = \
    cross_validation.train_test_split(x, y, 
    test_size=0.3, random_state=0)
    #将所有数据划分为训练集和测试集,test_size表示测试集的比例
    #random_state是随机数种子

(5)创建回归器,并进行训练

    #5创建回归器,进行训练
    clf = Ridge(alpha=1.0, fit_intercept=True)
    #接下来创建岭回归实例
    clf.fit(train_x, train_y)
    #调用fit函数使用训练集训练回归器
    score = clf.score(test_x, test_y)
    #利用测试集计算回归曲线的拟合优度,clf.score返回值为0.7375
    #拟合优度,用于评价拟合好坏,最大为1,无最小值,当对所有输入都输出一个值时,拟合优度为0

(6)画出拟合曲线

    #6画出拟合曲线
    print('score:',score)
    start = 200
    end = 300
    #画一段200到300范围内的拟合曲线
    y_pre = clf.predict(x) #是调用predict函数的拟合值
    time = np.arange(start, end)
    plt.plot(time, y[start:end],'b', label="real")
    plt.plot(time, y_pre[start:end],'r', label="predict")
    #展示真实数据(蓝色)以及拟合的曲线(红色)
    plt.legend(loc="upper left") #设置图例的位置
    plt.show()

全部代码

import numpy as np
from sklearn.linear_model import Ridge
#通过sklean.linermodel加载岭回归方法
#from sklearn import cross_validation
from sklearn import model_selection
#加载交叉验证模块,加载matplotilib模块
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
#通过..加载..用于创建多项式特征,如ab,a^2,b^2
def main():
    #2数据加载
    data = np.genfromtxt(r'C:\Users\86493\Desktop\北理工机器学习慕课数据\回归\岭回归.txt', delimiter=',')
    #使用numpy的方法从txt文件中加载数据
    plt.plot(data[:,4])
    #使用plt展示车流量信息,如右图
    plt.show()
    #3数据处理
    x = data[:,:4]
    #X用于保存0-4维数据,即属性
    y = data[:,4]
    #y用于保存第4维数据,即车流量
    poly = PolynomialFeatures(9)
    #用于创建最高次数6次方的多项式特征,多次试验后决定采用6次
    x = poly.fit_transform(x)
    #X为创建的多项式特征
    #4划分训练集和测试集
    train_x, test_x, train_y, test_y = \
    cross_validation.train_test_split(x, y, 
    test_size=0.3, random_state=0)
    #将所有数据划分为训练集和测试集,test_size表示测试集的比例
    #random_state是随机数种子
    #5创建回归器,进行训练
    clf = Ridge(alpha=1.0, fit_intercept=True)
    #接下来创建岭回归实例
    clf.fit(train_x, train_y)
    #调用fit函数使用训练集训练回归器
    score = clf.score(test_x, test_y)
    #利用测试集计算回归曲线的拟合优度,clf.score返回值为0.7375
    #拟合优度,用于评价拟合好坏,最大为1,无最小值,当对所有输入都输出一个值时,拟合优度为0
    #6画出拟合曲线
    print('score:',score)
    start = 200
    end = 300
    #画一段200到300范围内的拟合曲线
    y_pre = clf.predict(x) #是调用predict函数的拟合值
    time = np.arange(start, end)
    plt.plot(time, y[start:end],'b', label="real")
    plt.plot(time, y_pre[start:end],'r', label="predict")
    #展示真实数据(蓝色)以及拟合的曲线(红色)
    plt.legend(loc="upper left") #设置图例的位置
    plt.show()
if __name__ == '__main__':
    main()

(7)结果分析

分析结论:预测值和实际值的走势大致相同

image.png

相关文章
|
5月前
|
机器学习/深度学习 传感器 自动驾驶
【机器学习】机器学习赋能交通出行:智能化实践与创新应用探索
【机器学习】机器学习赋能交通出行:智能化实践与创新应用探索
423 0
|
机器学习/深度学习 数据可视化 数据挖掘
【机器学习实战】10分钟学会Python怎么用Ridge岭回归进行正则化(十三)
【机器学习实战】10分钟学会Python怎么用Ridge岭回归进行正则化(十三)
743 0
|
机器学习/深度学习
【阿旭机器学习实战】【13】决策树分类模型实战:泰坦尼克号生存预测
【阿旭机器学习实战】【13】决策树分类模型实战:泰坦尼克号生存预测
【阿旭机器学习实战】【13】决策树分类模型实战:泰坦尼克号生存预测
|
机器学习/深度学习 人工智能 vr&ar
【机器学习】线性回归——岭回归从贝叶斯角度理解(理论+图解+公式推导)
【机器学习】线性回归——岭回归从贝叶斯角度理解(理论+图解+公式推导)
384 0
【机器学习】线性回归——岭回归从贝叶斯角度理解(理论+图解+公式推导)
|
机器学习/深度学习 人工智能 vr&ar
【机器学习】线性回归——岭回归解决过拟合问题(理论+图解+公式推导)
【机器学习】线性回归——岭回归解决过拟合问题(理论+图解+公式推导)
291 0
【机器学习】线性回归——岭回归解决过拟合问题(理论+图解+公式推导)
|
机器学习/深度学习 移动开发 Windows
机器学习奥林匹克-身体健康与幸福之心脏病预测
机器学习奥林匹克-身体健康与幸福之心脏病预测
430 0
机器学习奥林匹克-身体健康与幸福之心脏病预测
|
机器学习/深度学习 数据处理
机器学习——PM2.5预测白话
本项目仅用于参考,提供思路和想法并非标准答案!请谨慎抄袭!
424 0
机器学习——PM2.5预测白话
|
机器学习/深度学习 数据采集 人工智能
就离谱!使用机器学习预测2022世界杯:小组赛挺准,但冠亚季军都错了 ⛵
本文使用机器学习建模对 FIFA 2022世界杯结果进行了预测,赛后将其与真实结果进行比较,可以看出:小组赛到1/4决赛的预测准确率很高,半决赛和决赛的预测准确率为0,冠亚季军无一预测准确。
141 0
就离谱!使用机器学习预测2022世界杯:小组赛挺准,但冠亚季军都错了 ⛵
|
机器学习/深度学习 算法
​Kaggle M5 Forecasting:传统预测方法与机器学习预测方法对比(三)
​Kaggle M5 Forecasting:传统预测方法与机器学习预测方法对比(三)
241 0
​Kaggle M5 Forecasting:传统预测方法与机器学习预测方法对比(三)
|
机器学习/深度学习 vr&ar
​Kaggle M5 Forecasting:传统预测方法与机器学习预测方法对比(二)
​Kaggle M5 Forecasting:传统预测方法与机器学习预测方法对比(二)
237 0
​Kaggle M5 Forecasting:传统预测方法与机器学习预测方法对比(二)