Python机器学习应用 | 岭回归
来源:互联网 发布:党章党规网络测试答案 编辑:程序博客网 时间:2024/05/01 17:32
1 岭回归
对于一般地线性回归问题,参数的求解采用的是最小二乘法,其目标函数如下:
参数w的求解,也可以使用如下矩阵方法进行:
对于矩阵X,若某些列线性相关性较大(即训练样本中某些属性线性相关),就会导致
结论:传统的基于最小二乘的线性回归法缺乏稳定性。
岭回归的优化目标:
对应的矩阵求解方法为:
岭回归(ridge regression)是一种专用于共线性数据分析的有偏估计回归方法,是一种改良的最小二乘估计法,对某些数据的拟合要强于最小二乘法。
2 sklearn中的岭回归
在sklearn库中,可以使用sklearn.linear_model.Ridge调用岭回归模型,其主要参数有:
• alpha:正则化因子,对应于损失函数中的��
• fit_intercept:表示是否计算截距,
• solver:设置计算参数的方法,可选参数‘auto’、‘svd’、‘sag’等
3 交通流量预测实例
3.1 数据介绍
数据为某路口的交通流量监测数据,记录全年小时级别的车流量。
3.2 实验目的
根据已有的数据创建多项式特征,使用岭回归模型代替一般的线性模型,对车流量的信息进行多项式回归。
技术路线:sklearn.linear_model.Ridgefrom
sklearn.preprocessing.PolynomialFeatures
3.3 数据实例
数据特征如下:
HR:一天中的第几个小时(0-23)
WEEK_DAY:一周中的第几天(0-6)
DAY_OF_YEAR:一年中的第几天(1-365)
WEEK_OF_YEAR:一年中的第几周(1-53)
TRAFFIC_COUNT:交通流量
全部数据集包含2万条以上数据(21626)
3.4 程序编写
3.4.1 建立工程,导入sklearn相关工具包
import numpy as npfrom sklearn.linear_model import Ridge #通过sklearn.linermodel加载岭回归方法from sklearn import cross_validation #加载交叉验证模块,加载matplotilib模块import matplotlib.pyplot as pltfrom sklearn.preprocessing import PolynomialFeatures #通过。。加载。。。用于创建多项式特征,如ab、a^2、b^2
3.4.2 数据加载
data=np.genfromtxt('data.txt') #使用numpy的方法从txt文件中加载数据plt.plot(data[:,4]) #使用plt展示车流量信息
3.4.3 数据处理
X=data[:,:4] #X用于保存0-3维数据,即属性y=data[:,4] #y用于保存第4维数据,即车流量poly=PolynomialFeatures(6) #用于创建最高次数6次方的的多项式特征,多次试验后决定采用6次X=poly.fit_transform(X) #X为创建的多项式特征
3.4.4 划分训练集和测试集
train_set_X, test_set_X , train_set_y, test_set_y =cross_validation.train_test_split(X,y,test_size=0.3,random_state=0)#将所有数据划分为训练集和测试集,test_size表示测试集的比例,#random_state是随机数种子
3.4.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。
3.4.6 画出拟合曲线
start=200 #接下来我们画一段200到300范围内的拟合曲线end=300y_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()
3.5 结果展示
阅读全文
0 0
- Python机器学习应用 | 岭回归
- Python机器学习应用 | 线性回归
- Python机器学习应用 | 多项式回归
- python机器学习《回归 一》
- 应用机器学习(四):Logistic 回归
- 【机器学习系列】logistic回归python实现
- 机器学习-Logistic回归python实现
- 机器学习 Python实现逻辑回归
- 机器学习实战python版Logistic回归
- 机器学习:逻辑回归python实现
- Python机器学习之Logistic回归
- 7.1简单线性回归--python机器学习
- 7.3多元线性回归--python机器学习
- 机器学习 Logistic回归 原理Python实现
- 机器学习-线性回归python简单实现
- Python机器学习实战之逻辑回归
- 机器学习之线性回归 (Python SKLearn)
- python机器学习实战4:Logistic回归
- 基于cxf和axis两种框架下的webservice客户端开发
- 【mybatis】动态sql
- 简单解决ScrollView和ListView冲突不兼容问题
- numpy.newaxis
- TableView的cell上面加button,实现点击button可以获取到cell的行号或者indexPath
- Python机器学习应用 | 岭回归
- php字符统计
- 数据结构之双向列表实现
- linux:作业控制&作业规划进程crond
- 217. Contains Duplicate的C++解法
- css float 解析
- tools_r25.2.3-macosx
- java 通过AES+base64加密-解密
- 方法的重载和覆盖