这篇文章主要介绍“Python如何实现岭回归”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何实现岭回归”文章能帮助大家解决问题。
对于一般地线性回归问题,参数的求解采用的是最小二乘法,其目标函数如下:
参数 w 的求解,也可以使用如下矩阵方法进行:
这个公式看着吓人,其实推导过程简单由(推导而来,纸老虎)
对于矩阵 X ,若某些列线性相关性较大(即训练样本中某些属性线性相关),就会导致
的值接近 0 ,在计算时就会出现不稳定性。
结论 : 传统的基于最小二乘的线性回归法缺乏稳定性。
岭回归的优化目标:
对应的矩阵求解方法为:
岭回归(ridge regression
) 是一种专用于共线性数据分析的有偏估计回归方法。
是一种改良的最小二乘估计法,对某些数据的拟合要强于最小二乘法。
图二就是正常拟合,符合数据的趋势,而图三,虽然在训练集上拟合得很好,但是出现未知数据时,比如Size很大时,根据目前拟合来看,可能得到的结果很小,与实际误差会很大。
在sklearn库中,可以使用sklearn.linear_model.Ridge调用岭回归模型,其主要参数有:
• alpha:正则化因子,对应于损失函数中的 ????
• fit_intercept:表示是否计算截距,
• solver:设置计算参数的方法,可选参数‘auto’、‘svd’、‘sag’等。
交通流量预测实例:
数据为某路口的交通流量监测数据,记录全年小时级别的车流量。
根据已有的数据创建多项式特征,使用岭回归模型代替一般的线性模型,对 车流量 的信息进行 多项式回归 。
HR
:一天中的第几个小时(0-23)WEEK_DAY
:一周中的第几天(0-6)DAY_OF_YEAR
:一年中的第几天(1-365)WEEK_OF_YEAR
:一年中的第几周(1-53)TRAFFIC_COUNT
:交通流量
全部数据集包含2万条以上数据(21626)
#*================1. 建立工程,导入sklearn相关工具包====================** import numpy as np from sklearn.linear_model import Ridge #通过sklearn.linermodel加载岭回归方法 from sklearn import model_selection #加载交叉验证模块 import matplotlib.pyplot as plt #加载matplotilib模块 from sklearn.preprocessing import PolynomialFeatures #通过加载用于创建多项式特征,如ab、a2、b2 #*=================2. 数据加载=========================================** data=np.genfromtxt('岭回归.csv',delimiter=',') #使用numpy的方法从csv文件中加载数据 print(data) print(data.shape) plt.plot(data[:,4]) #使用plt展示车流量信息 #plt.show() #*================3. 数据处理==========================================** X=data[:,:4] #X用于保存0-3维数据,即属性 y=data[:,4] ##y用于保存第4维数据,即车流量 poly=PolynomialFeatures(6) #用于创建最高次数6次方的的多项式特征,多次试验后决定采用6次 X=poly.fit_transform(X) #X为创建的多项式特征 #*================4. 划分训练集和测试集=================================** train_set_x, test_set_x , train_set_y, test_set_y =model_selection.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_set_x,train_set_y) #调用fit函数使用训练集训练回归器 clf.score(test_set_x,test_set_y) #利用测试集计算回归曲线的拟合优度,clf.score返回值为0.7375 #拟合优度,用于评价拟合好坏,最大为1,无最小值,当对所有输入都输出同一个值时,拟合优度为0。 #*============6. 画出拟合曲线=========================================** start=100 #接下来我们画一段200到300范围内的拟合曲线 end=200 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()
分析结论 :预测值和实际值的走势大致相同
关于“Python如何实现岭回归”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。