机器学习——线性回归/岭回归/Lasso回归

这篇具有很好参考价值的文章主要介绍了机器学习——线性回归/岭回归/Lasso回归。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0、前言:

  • 线性回归会用到python第三方库:sklearn.linear_model中的LinearRegression
  • 导入第三方库的方法:from sklearn.linear_model import LinearRegression
  • 使用LinearRegression(二维数据,一维数据)进行预测,其中数据类型可以是pandas中的DataFrame或者series,也可以是numpy中的array数据,但维度一定要正确输入。
  • 在线性回归模型中可以查看训练好的模型当中的特征系数(y=kx+b当中的k)和训练好的模型当中的截距(y=kx+b当中的b),方法是调用训练好的模型的属性coef_查看系数,调用训练好的模型的属性intercept_查看截距。
  • ★注意:线性回归的原理如下图,所以在计算过程中会用到求逆矩阵的方法,如果一个数据特征数量比数据本身要多(也就是说数据中的列数大于行数),则不构成满秩矩阵,无法求出对应的逆矩阵,因此无法使用线性回归,理解起来比较困难,因此就做简单理解即可。
    机器学习——线性回归/岭回归/Lasso回归,机器学习与深度学习,机器学习,线性回归,人工智能

1、应用:

  • 通过线性回归预测糖尿病
  • 数据来源:sklearn中自带
  • 代码
# 导入三件套
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 导入糖尿病数据集
from sklearn.datasets import load_diabetes
# 导入线性回归模型
from sklearn.linear_model import LinearRegression
# 查看数据集
data_set = load_diabetes()
display(data_set)
feature_name = data_set['feature_names']
data = data_set['data']
target = data_set['target']
print('=====')
display(data.shape,target.shape)
# 查看dataframe模式下的输入数据
data = pd.DataFrame(data, columns=feature_name)
data.head(5)
# 切分数据
from sklearn.model_selection import train_test_split

x_train,x_test,y_train,y_test = train_test_split(data,target,test_size=0.2)
# 引入线性回归模型
line = LinearRegression()
# 训练模型
line.fit(x_train,y_train)
# 预测
pred = line.predict(x_test)
display(pred)

# 查看系数和截距
display(line.coef_) # 通过系数查看哪些特征对结果影响较大,一般正数影响大于负数影响
display(line.intercept_)



2、应用分析:

  • 讲糖尿病数据中的所有特征全部单独通过线性回归进行训练,就能够明显看出每个特征对预测结果的影响
  • 代码
# 三件套
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 导入糖尿病数据集
from sklearn.datasets import load_diabetes

# 导入线性回归算法
from sklearn.linear_model import LinearRegression

data_set = load_diabetes()
feature_name = data_set['feature_names']
data = data_set['data']
target = data_set['target']
data = pd.DataFrame(data, columns=feature_name)

# 设置画布尺寸
plt.figure(figsize=(5*6,2*6))

for i,col in enumerate(data.columns):
#     print(i)
    
    # 画出每个特征和结果的散点图
    aex = plt.subplot(2,5,i+1)
    aex.scatter(data.loc[:,col],target)
    # 画出用每个特征单独与结果训练的特征图
    line = LinearRegression()
    line.fit(data.loc[:,[col]],target)
    x = np.linspace(data.loc[:,col].min(),data.loc[:,col].max(),100)
    y = line.coef_*x + line.intercept_
    aex.plot(x,y,c='r')
    # 给每个图在对应特征的训练得分
    score = np.round(line.score(data.loc[:,[col]],target),2)
    aex.set_title(f'score:{score}',fontsize=20)
  • 结果
    机器学习——线性回归/岭回归/Lasso回归,机器学习与深度学习,机器学习,线性回归,人工智能

  • 可以发现:bmi这个特征和s5特征通过线性回归模型训练后的得分更高,所以这两个因素是对于结果的影响更大。

  • 上面的作图方式和分析方法是需要掌握的,在进行科技论文写作时,这是很好的表述和分析范例。


3、岭回归回归:

  • 如果数据的特征比样本数量还多(列大于行),就可以用岭回归的方法,因为输入矩阵不是满秩矩阵,因此无法求逆,就会导致无法使用线性回归。
  • 岭回归简单理解如下:
    机器学习——线性回归/岭回归/Lasso回归,机器学习与深度学习,机器学习,线性回归,人工智能
    机器学习——线性回归/岭回归/Lasso回归,机器学习与深度学习,机器学习,线性回归,人工智能
    上图中的0.01就是岭回归参数λ,对于λ的选择需要调试,λ增大,模型的方差就会越小,模型的偏差就会越大。
    岭回归的调用:
from sklearn.linear_model import Ridge

对于岭回归,本文中的介绍很粗浅,只是说明了它所解决的问题以及如何调用它,还有调用时的参数说明。文章来源地址https://www.toymoban.com/news/detail-694734.html

  • 理解过拟合和欠拟合
    机器学习——线性回归/岭回归/Lasso回归,机器学习与深度学习,机器学习,线性回归,人工智能

4、三种回归对比

  • 方案:给定一个特征数大于样本数的输入样本,给定参数,通过输入样本和参数计算输出样本,制作数据集,然后分别用三种回归算法训练数据集,得到训练之后的参数,画出参数对比三者的区别
  • 代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 数据样本设置为200个特征,50个样本
x_train = np.random.randn(50, 200) # 生成一个形状为 (50, 200) 的数组,其中包含的元素是从标准正态分布

# 系数给200个
coef = np.random.randn(200) 
# 为了看起来清晰,对部分系数进行归零操作
index_list = np.arange(200)
np.random.shuffle(index_list) # 打乱列表中的元素顺序
coef[index_list[:190]] = 0 # 将参数数组中190个元素变为0

display(x_train.shape, coef.shape)

# 进行点乘运算生成y值:y_train = w1x1 + w2x2 + ... + w200x200
y_train = np.dot(x_train, coef)
display(y_train.shape)

# 绘制预测结果图
plt.figure(figsize=(2*5,2*4))



# 正常参数图
aex1 = plt.subplot(2,2,1)
aex1.plot(coef,c='b')
# 线性回归参数图
from sklearn.linear_model import LinearRegression
coef2 = LinearRegression().fit(x_train, y_train).coef_
aex2 = plt.subplot(2,2,2)
aex2.plot(coef2,c='b')
# 岭回归参数图
from sklearn.linear_model import Ridge
coef3 = Ridge().fit(x_train, y_train).coef_
aex3 = plt.subplot(2,2,3)
aex3.plot(coef3,c='b')
# Losse回归参数图
from sklearn.linear_model import Lasso
coef4 = Lasso(alpha=0.03).fit(x_train, y_train).coef_
aex4 = plt.subplot(2,2,4)
aex4.plot(coef4,c='b')
  • 结果
    机器学习——线性回归/岭回归/Lasso回归,机器学习与深度学习,机器学习,线性回归,人工智能
  • 分析:可以看出Lasso回归可以筛选参数(去除参数),而其他两种回归只能缩小参数的影响,但不会去除参数。

到了这里,关于机器学习——线性回归/岭回归/Lasso回归的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习&&深度学习——线性回归的从零开始实现

    虽然现在的深度学习框架几乎可以自动化实现下面的工作,但从零开始实现可以更了解工作原理,方便我们自定义模型、自定义层或自定义损失函数。 根据带有噪声的线性模型构造一个人造数据集。任务是使用这个数据集来恢复模型的参数。我们使用低维数据,可以更容易地

    2024年02月15日
    浏览(39)
  • 机械学习模型训练常用代码(随机森林、聚类、逻辑回归、svm、线性回归、lasso回归,岭回归)

    更多pandas操作请参考添加链接描述pandas对于文件数据基本操作 导入的包sklearn 字符串编码处理,LabelEncoder TfidfVectorizer结合TruncatedSVD 排除某一列,例如 如果需要用到回归则换成RandomForestRegressor 数据在dc_matrix里面 绘制距离 #加入到表里面 师范,保存文本模型,使用其转换,调

    2023年04月14日
    浏览(52)
  • 机器学习入门教学——人工智能、机器学习、深度学习

    1、人工智能 人工智能相当于人类的代理人,我们现在所接触到的人工智能基本上都是弱AI,主要作用是正确解释从外部获得的数据,并对这些数据加以学习和利用,以便灵活的实现特定目标和任务。 例如: 阿尔法狗、智能汽车 简单来说: 人工智能使机器像人类一样进行感

    2024年02月09日
    浏览(91)
  • 人工智能、机器学习、深度学习的区别

    人工智能涵盖范围最广,它包含了机器学习;而机器学习是人工智能的重要研究内容,它又包含了深度学习。 人工智能是一门以计算机科学为基础,融合了数学、神经学、心理学、控制学等多个科目的交叉学科。 人工智能是一门致力于使计算机能够模拟、模仿人类智能的学

    2024年02月08日
    浏览(56)
  • 一探究竟:人工智能、机器学习、深度学习

    1.1 人工智能是什么?          1956年在美国Dartmounth 大学举办的一场研讨会中提出了人工智能这一概念。人工智能(Artificial Intelligence),简称AI,是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的

    2024年02月17日
    浏览(53)
  • 12、人工智能、机器学习、深度学习的关系

    很多年前听一个机器学习的公开课,在QA环节,一个同学问了老师一个问题“ 机器学习和深度学习是什么关系 ”? 老师先没回答,而是反问了在场的同学,结果问了2-3个,没有人可以回答的很到位,我当时也是初学一脸懵,会场准备的小礼品也没有拿到。 后来老师解释“机

    2024年02月05日
    浏览(72)
  • 机器学习、人工智能、深度学习三者的区别

    目录 1、三者的关系 2、能做些什么 3、阶段性目标 机器学习、人工智能(AI)和深度学习之间有密切的关系,它们可以被看作是一种从不同层面理解和实现智能的方法。 人工智能(AI):人工智能是一门研究如何使计算机能够模仿人类智能的学科。它涵盖了各种技术和方法,

    2024年02月14日
    浏览(61)
  • 深度学习2.神经网络、机器学习、人工智能

    目录 深度学习、神经网络、机器学习、人工智能的关系 大白话解释深度学习 传统机器学习 VS 深度学习 深度学习的优缺点 4种典型的深度学习算法 卷积神经网络 – CNN 循环神经网络 – RNN 生成对抗网络 – GANs 深度强化学习 – RL 总结 深度学习 深度学习、机器学习、人工智能

    2024年02月11日
    浏览(69)
  • 人工智能-机器学习-深度学习-分类与算法梳理

    目前人工智能的概念层出不穷,容易搞混,理清脉络,有益新知识入脑。 为便于梳理,本文只有提纲,且笔者准备仓促,敬请勘误,不甚感激。 符号主义(Symbolists) 基于逻辑推理的智能模拟方法。最喜欢的算法是:规则和决策树。符号主义的代表性成果有启发式程序、专家系

    2024年02月03日
    浏览(91)
  • 机器学习、深度学习、人工智能的区别与联系

    大家好,如果没有接触过机器学习,往往对机器学习、深度学习、甚至是人工智能有着模糊的概念。在进行深度的对比人工智能、机器学习和深度学习之后,有助于大家理清概念、选择适当技术,并建立起整个学科的框架,进而可以开展相关目标的学习。 本文将从下面几方面

    2024年01月22日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包