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

对于矩阵 X ,若某些列线性相关性较大(即训练样本中某些属性线性相关),就会导致X^{T}X)

的值接近 0 ,在计算\left ( X^{T}X\right )^{-1}) 时就会出现不稳定性。

结论 传统的基于最小二乘的线性回归法缺乏稳定性。

1.2 岭回归

岭回归的优化目标:

argmin\left | Xw-y \right |^{2}+\partial \left | w \right |^{2}

对应的矩阵求解方法为:

w=(X^{T}X+\partial I){-1}X{T}y

岭回归(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”)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

n/img_convert/9f49b566129f47b8a67243c1008edf79.png)

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值