机器学习之linear_model(Ridge Regression)

机器学习之linear_model(Ridge Regression)这里先解释一下过拟合与欠拟合的概念 所谓过拟合 是指模型学习能力过于强大 把训练样本中某些不太具有一般性的特征都学到了 例如判断一个人是否是好人 训练样本中所有好人都或多或少做过一些坏事 模型学到了这一特征 把这一模型运用到了实际预测中去 这明显是有失偏颇的 因为一个人是否是好人理论上跟一个人是否做过坏事是不相关的 所谓欠拟合 是指模型学习能力低下 连训练集中的数据都不能很好的拟合 比如说我要预测一个人是否是坏人 模型只考虑到了他是否做过坏事 这明显是考虑不全的 做过坏事不一定就是坏人 那么显然这

这里先解释一下过拟合与欠拟合的概念。

所谓过拟合,是指模型学习能力过于强大,把训练样本中某些不太具有一般性的特征都学到了。例如判断一个人是否是好人,训练样本中所有好人都或多或少做过一些坏事,模型学到了这一特征,把这一模型运用到了实际预测中去,这明显是有失偏颇的,因为一个人是否是好人理论上跟一个人是否做过坏事是不相关的。

所谓欠拟合,是指模型学习能力低下,连训练集中的数据都不能很好的拟合,比如说我要预测一个人是否是坏人,模型只考虑到了他是否做过坏事,这明显是考虑不全的,做过坏事不一定就是坏人,那么显然这种情况就是欠拟合。

欠拟合比较好解决,比如增加模型复杂度,而过拟合就比较难以解决。回到线性模型中,线性模型中过拟合就是模型过于复杂了,考虑特征太多,或者考虑了某些特征的过高阶。Ridge regression即岭回归,是通过一种叫做正则化的手段来减小过拟合。
正则化项有两种,其中岭回归采用的是第二种。正则化其实就是在线性回归最小二乘法的损失函数基础上加入了惩罚项。
最小二乘法的损失函数,即原始损失函数为:
在这里插入图片描述
即均方误差最小。
岭回归的损失函数为:
在这里插入图片描述












from sklearn import linear_model import numpy as np import matplotlib.pyplot as plt from sklearn.metrics import mean_squared_error,r2_score,mean_absolute_error plt.title('Ridge_Regression') x_train_data=np.array([383.,323.,328.,207.,226.,25.,179.,60.,208.,606.]).reshape(-1,1) #变成一个向量 y_train_data=np.array([640.,633.,619.,393.,428.,27.,193.,66.,226.,1591.]) x_test_data=np.array([385.,145.,258.,254.,100.,47.,58.,79.,415.,144.,156.,149.,20.,25.]).reshape(-1,1) y_test_data=np.array([830.,195.9,588.3,499.4,77.,-100.8,-150.,-88,950.8,199.3,230.5,233.,-160.,-190.]) #Ridge_Regression reg=linear_model.Ridge(alpha=0.5) reg.fit(x_train_data,y_train_data) y_pred=reg.predict(x_test_data) #输出系数和截距 print('w:',reg.coef_,'b:',reg.intercept_) #输出评价指标 print('MSE:',mean_squared_error(y_test_data,y_pred)) print('MAE:',mean_absolute_error(y_test_data,y_pred)) print('R Squared:',r2_score(y_test_data,y_pred)) #显示 plt.scatter(x_test_data, y_test_data, color='black') plt.plot(x_test_data, y_pred, color='blue', linewidth=3) plt.show() 

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201436.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午9:23
下一篇 2026年3月20日 上午9:24


相关推荐

  • IDEA激活成功教程后一直提示JetbrainsAgent 相关的弹框问题

    IDEA激活成功教程后一直提示JetbrainsAgent 相关的弹框问题激活成功教程后打开IDEA就弹框,关闭之后会自动打开浏览器,隔一会也会弹出来 也是一样的问题一开始是说把txt 和 jar 文件放一个路径下之类的方法,几经波折,发现没任何用处~最后各种搜索排查,在设置下更改配置就不弹啦~settings设置下搜索agent 取消”Instrumenting agent(requires debugger restart)”在 Reload classes after compilation:选择第一个 Always…

    2022年8月20日
    10
  • Linux下安装libiconv

    Linux下安装libiconv1、下载libiconv库wgethttp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz2.解压,然后进入解压后的目录tarzxvflibiconv-1.13.1.tar.gz&&cdlibiconv-1.13.13.配置libiconvsudo./configure–prefix=/usr/local或者sudo./configure–prefix=…

    2025年8月12日
    7
  • 最大熵模型详解

    最大熵模型详解最大熵模型学习过程前言在将最大熵模型之前 先学习一下准备知识 拉格朗日乘子法 贝叶斯定理 Bayes 定理用来描述两个条件概率之间的关系 若计 P A 和 P B 分别表示事件 A 和事件 B 发生的概率 P A B 表示事件 B 发生的情况下事件 A 发生的概率 P A B 表示事件 A 和 B 同时发生的概率 则有 结合 1 1 1 2 可以得出贝叶斯公式 熵熵是用来表示随机变量不确定性的度量 H x 依赖于 X 的分布 而与 X 的具体值

    2026年3月17日
    2
  • java readwritelock原理_java四种线程池

    java readwritelock原理_java四种线程池前言前面介绍了java中排它锁,共享锁的底层实现机制,本篇再进一步,学习非常有用的读写锁。鉴于读写锁比其他的锁要复杂,不想堆一大波的文字,本篇会试图图解式说明,把读写锁的机制用另外一种方式阐述。

    2022年8月12日
    10
  • OPENCLAW部署笔记

    OPENCLAW部署笔记

    2026年3月14日
    3
  • Windows内核之进程的终止和子进程

    Windows内核之进程的终止和子进程

    2021年12月4日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号