栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

人工智能——岭回归(Python)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

人工智能——岭回归(Python)

目录

1 概述

1.1 线性回归

1.2 岭回归 

1.3 过拟合

2 sklearn中的岭回归

3 案例 

3.1 数据介绍:

3.2 实验目的:

3.3 数据特征如下:

4 Python实现 

4.1 代码

4.2 结果 

5 正则化 


1 概述

1.1 线性回归 对于一般地线性回归问题,参数的求解采用的是最小二乘法,其目标函数如下:                                       参数 w 的求解,也可以使用如下矩阵方法进行:                                        这个公式看着吓人,其实推导过程简单由( 推导而来,纸老虎) 对于矩阵 X ,若某些列线性相关性较大(即训练样本中某些属性线性相关),就会导致 的值接近 0 ,在计算 时就会出现不稳定性。 结论 : 传统的基于最小二乘的线性回归法缺乏稳定性。

1.2 岭回归  岭回归的优化目标:                          对应的矩阵求解方法为:                      岭回归(ridge regression) 是一种专用于共线性数据分析的有偏估计回归方法。 是一种改良的最小二乘估计法,对某些数据的拟合要强于最小二乘法。

1.3 过拟合

图二就是正常拟合,符合数据的趋势,而图三,虽然在训练集上拟合得很好,但是出现未知数据时,比如Size很大时,根据目前拟合来看,可能得到的结果很小,与实际误差会很大。 

                   

2 sklearn中的岭回归
在sklearn库中,可以使用sklearn.linear_model.Ridge调用岭回归模型,其主要参数有: • alpha:正则化因子,对应于损失函数中的 휶 • fit_intercept:表示是否计算截距, • solver:设置计算参数的方法,可选参数‘auto’、‘svd’、‘sag’等。

3 案例 
                                        交通流量预测实例:

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

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

3.3 数据特征如下: HR :一天中的第几个小时(0-23) WEEK_DAY :一周中的第几天(0-6) DAY_OF_YEAR :一年中的第几天(1-365) WEEK_OF_YEAR :一年中的第几周(1-53) TRAFFIC_COUNT :交通流量 全部数据集包含2万条以上数据(21626)

 

4 Python实现 

4.1 代码
#*================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()

4.2 结果 

                  

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

 

5 正则化 

原理解析-过拟合与正则化

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/700210.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号