人工智能-线性回归2--房价预测、欠拟合过拟合、正则化、模型保存加载

news2025/1/15 20:59:16

7,案例:波士顿房价预测

回归性能评估MSE

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression,SGDRegressor
from sklearn.meyrics import mean_squared_error

#线性回归:正规方程
def linear_model():
	#1,获取数据
	boson = load_boston()
	print(boston)
	#2,数据基本处理
	#2.1 分割数据
	x_train,x_test,y_train.y_test = 			 train_test_split(boston.data,boston.target,test_size=0.2)
	#3,特征工程-标准化
	transfer = StandardScaler()
	x_train = transfer.fit_transform(x_train)
	x_test = transfer.fit_transform(x_test)

	##4,机器学习-线性回归
	estimator = LinearRegression()
	estimator.fit(x_train,y_train)
	print('这个模型的偏置是:\n',estimator.intercept_)
	print('这个模型的系数是:\n',estimator.coef_)
	#5,模型评估
	#5.1 预测值
	y_pre = estimator.predict(x_test)
	print('预测值是:\n',y_pre)
	#5.2 均方误差
	ret = mean_squared_error(y_test,y_pre)
	print('均方误差是:\n',ret)

linear_model()

和上面的区别就是,线性回归调用模型名不同,其余代码一样

from sklearn.linear_model import SGDRegressor
#线性回归:梯度下降法
def linear_model2():
	#1,获取数据
	boson = load_boston()
	print(boston)
	#2,数据基本处理
	#2.1 分割数据
	x_train,x_test,y_train.y_test = 			 train_test_split(boston.data,boston.target,test_size=0.2)
	#3,特征工程-标准化
	transfer = StandardScaler()
	x_train = transfer.fit_transform(x_train)
	x_test = transfer.fit_transform(x_test)

	##4,机器学习-线性回归
	#estimator = SGDRegressor(max_iter = 1000,learning_rate='constant',eta0=1)
	estimator = SGDRegressor(max_iter = 1000)
	estimator.fit(x_train,y_train)
	print('这个模型的偏置是:\n',estimator.intercept_)
	print('这个模型的系数是:\n',estimator.coef_)
	#5,模型评估
	#5.1 预测值
	y_pre = estimator.predict(x_test)
	print('预测值是:\n',y_pre)
	#5.2 均方误差
	ret = mean_squared_error(y_test,y_pre)
	print('均方误差是:\n',ret)

linear_model2()

8,欠拟合与过拟合

过拟合—模型过于复杂
欠拟合—模型过于简单

欠拟合

原因:学习到数据的特征过少
解决:添加其他特征项,添加多项式特征

欠拟合

原因:原始特征太多,存在一些嘈杂特征
解决:重新清洗数据、增大数据的训练量、正则化、减少特征维度,防止维灾难

正则化

正则化:解决回归过拟合问题,数据提供的特征有些影响模型复杂度或者这个特征的数据点异常较多,算法在学习时尽量减少这个特征的影响(删除某个特征的影响)
类别:

  • L2正则化
    作用:可以使得其中一些w都很小,接近0,削弱某个特征的影响
    优点:越小的参赛说明模型越简单,越简单的模型则越不容易产生过拟合
    Ridge回归

  • L1正则化
    作用:可以使得其中一些W的值直接为0,删除这个特征的影响
    LASSO回归

维灾难:随着特征越来越多,一开始效果会变好,到达某顶点后,后面则会变差

9,正则化线性模型

岭回归、Lasso回归、弹性网络

10,岭回归

在这里插入图片描述
正则化力度a越大,权重系数越小
正则化力度越小,权重系数越大

from sklearn.linear_model import Ridge
#线性回归:岭回归
def linear_model3():
	#1,获取数据
	boson = load_boston()
	print(boston)
	#2,数据基本处理
	#2.1 分割数据
	x_train,x_test,y_train.y_test = 			 train_test_split(boston.data,boston.target,test_size=0.2)
	#3,特征工程-标准化
	transfer = StandardScaler()
	x_train = transfer.fit_transform(x_train)
	x_test = transfer.fit_transform(x_test)

	##4,机器学习-线性回归
	#estimator = Ridge(alpha=1.0)
	estimator = RidgeCV(alphas=(0.001,0.01,0.1,1,10,100))
	estimator.fit(x_train,y_train)
	print('这个模型的偏置是:\n',estimator.intercept_)
	print('这个模型的系数是:\n',estimator.coef_)
	#5,模型评估
	#5.1 预测值
	y_pre = estimator.predict(x_test)
	print('预测值是:\n',y_pre)
	#5.2 均方误差
	ret = mean_squared_error(y_test,y_pre)
	print('均方误差是:\n',ret)
if __name__ = '__main__':
	linear_model3()

11,模型的保存和加载

API
在这里插入图片描述
增加个4.2

from sklearn.externals import joblib
def dump_load():
	#1,获取数据
	boson = load_boston()
	print(boston)
	#2,数据基本处理
	#2.1 分割数据
	x_train,x_test,y_train.y_test = 			 train_test_split(boston.data,boston.target,test_size=0.2)
	#3,特征工程-标准化
	transfer = StandardScaler()
	x_train = transfer.fit_transform(x_train)
	x_test = transfer.fit_transform(x_test)

	##4,机器学习-线性回归
	#4.1 模型训练
	#estimator = Ridge(alpha=1.0)
	estimator = RidgeCV(alphas=(0.001,0.01,0.1,1,10,100))
	estimator.fit(x_train,y_train)
	print('这个模型的偏置是:\n',estimator.intercept_)
	print('这个模型的系数是:\n',estimator.coef_)

	#4.2 模型保存
	joblib.dump(estimator,'./data/test.pkl')  #运行后目录上多出个test.pkl文件
	
	#5,模型评估
	#5.1 预测值
	y_pre = estimator.predict(x_test)
	print('预测值是:\n',y_pre)
	#5.2 均方误差
	ret = mean_squared_error(y_test,y_pre)
	print('均方误差是:\n',ret)
if __name__ = '__main__':
	linear_model3()

#调用
estimator = joblib.load('./data/test.pkl')  #加载出了保存着的模型

保存模型,后缀是pkl

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/10476.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解PHP解决swoole守护进程Redis假死 ,mysql断线重连问题

详解PHP解决swoole守护进程Redis假死 ,mysql断线重连问题最近公司有个项目,要举办一个线上活动,我这边负责提供接口记录用户访问记录,与操作记录,由于活动参与人数可能比较多,为了不影响正常业务运行&#…

安全性归约(游戏)

文章目录基于游戏的安全性定义归约中的概率关系某事件发生某事件不发生互斥事件基于游戏的安全性定义 在将攻击 Γ\GammaΓ 的算法 A′AA′ 归约到攻击 Π\PiΠ 的算法 AAA 时, 让 A′AA′ 根据 ChΓCh_\GammaChΓ​ 提供的信息,为 AAA 模拟出同分布的 …

股票自动下单接口够接入多种股票数据源吗?

很多的股票交易接口在原先只能接入行情的CTP程序,那么股票自动下单接口现在可以通过openctp提供的CTPAPI,可以接入到多种多样的股票数据源!但是目前由于大多的股票交易接口是受到监管限制的就很难接入实盘,那么股票自动下单接口通…

知心世界姐王瑞平:谷传民与大衣哥朱之文是沟通问题不是人品问题

大衣哥和谷传民的官司走到现在,互联网上面也出现了两大阵营对垒,一方面是大衣哥的粉丝,旗帜鲜明地支持自己的偶像,另一大阵营的人,则一心一意支持谷传民。虽然每个阵营都有自己的道理,但是毕竟都太过极端&a…

Virtual Data Augmentation: 虚拟数据扩增技术

听说过数据扩增(Data Augmentation),也听说过虚拟对抗训练(Virtual Adversarial Traning),但是我没想到会有人将其结合,谓之虚拟数据扩增(Virtual Data Augmentation)。这…

CANoe诊断测试

诊断协议那些事儿 本文为诊断协议那些事儿专栏文章,当我们在开发工程中越来越多的需要使用到总线测试工具,其中包括BUSMASTER、周立功、PCAN、CANOE等,本文将使用德国Vector公司的CANoe介绍诊断测试的基本环境。 文章目录诊断协议那些事儿一…

Python编程从入门到实践 第五章:if语句 练习答案记录

Python编程从入门到实践 第五章:if语句 练习答案记录 练习题导航Python编程从入门到实践 第五章:if语句 练习答案记录5.1 一个简单示例5.2 条件测试5.2.1 检查是否相等5.2.2 检查是否相等时忽略大小写5.2.3 检查是否不相等5.2.4 数值比较5.2.5 检查多个文…

运行yolov5 v6遇到的问题

1. Arial.ttf无法在运行时下载的问题 可以选择用浏览器下载,然后拷贝到docker或者ubuntu下,创建服务器的http访问方式。 具体为: 1.1 下载文件 Arial.ttf 并拷贝到docker或者ubuntu下 1.2 在ubuntu下创建http访问方式: # 安装…

有限元仿真分析误差来源之边界条件,约束和point mass

导读:前不久,我在这里分享了一篇《有限元仿真分析误差来源之材料参数设置,小心为妙》的文章,引发了同行们的关注和讨论。在此感谢仿真秀平台讲师们的批评和指正,一起认真交流技术和进步。今天我将继续带来关于边界条件…

spring data jpa在mysql分页中的实例(一次访问同时获取数据和总数)

一、原生sql语句 mysql中语句如下 select SQL_CALC_FOUND_ROWS sn,max(count) as active_count from sn_state_changed where sn_year zz group by sn limit 0,10; select FOUND_ROWS() as total; 解释: SQL_CALC_FOUND_ROWS 供后面的查询总数sql语句使…

(STM32)从零开始的RT-Thread之旅--SPI驱动ST7735(1)

上一篇: (STM32)从零开始的RT-Thread之旅--GPIO 我使用的开发板是WeAct的H743板子,板子带一个0.96的SPI驱动的LCD,给的有现成的测试用例,看源码应该是ST的工程师写的ST7735的驱动,打算把这个驱动直接拿到RTT工程里面使…

SolidWorks 入门笔记01:草图绘制

全文目录简介1. 草图的创建1.1 在基准面上新建一个二维草图多学一招:退出草图绘制模式,快捷键切换视图1.2 从已有的草图派生新的草图。1.3 在零件的平面上绘制草图多学一招:SolidWorks 中鼠标滚轮放大缩小功能反的解决办法 。2. 基本图形绘制…

【2022秋线上作业-第5次-第11-13周】判断题

1-1 一棵有124个结点的完全二叉树,其叶结点个数是确定的。T 解析: 一棵124个叶节点的完全二叉树,假设n0为叶子节点数,n1为度为1结点数,n2为度为2结点数,则有总结点数为n0n1n2;而n2n0-1123&#…

如何杜绝 spark history server ui 的未授权访问?

如何杜绝 spark history server ui 的未授权访问? 1 问题背景 默认状况下,Spark history Sever ui 是没有任何访问控制机制的,任何用户只要知道 shs 对应的 url,就可以访问链接查看 spark 作业的运行状况。 在证券基金银行等金融行业中&a…

Kotlin 开发Android app(六):Kotlin 中的空判断 问号和感叹号

如果有人对程序的崩溃原因做下统计的话,那么由于对象为空,但是又访问了对象的某个属性而导致的崩溃,也许会是程序崩溃的第一大原因了。 比如我们在使用字符串的时候,变量字符串为空的时候,我们去访问了这个字符串变量的…

2022-11-16 每日打卡:单调栈解决最大矩形问题(一维直方图,二维最大红矩形)

每日打卡:单调栈解决最大矩形问题(一维直方图,二维最大红矩形) 柱状图中最大的矩形 思路 这个题最明显的思路就是:矩形面积底高。 版本1:底的长度可以通过二重循环来完成,高通过循环来寻找最…

44、Spring AMQP 数据转换器

1、操作案例 2、发送一个对象到队列中 3、控制台查看 4、使用消息转换器 5、消费者接收消息, 传递什么类型,就接受什么类型,发送方与接收方所使用的消息转换器必须对应 6、总结分析 默认的消息推送是通过JDK序列化的方式进行的,…

【STM32+cubemx】0029 HAL库开发:HMC5883L磁力计的应用(电子指南针)

今天我们来学习电子磁力计HMC5883L的使用。先介绍磁力计的基础知识,再给一个获取磁力计数据的例子,最后讲解HMC5883L磁力计的校准,以及一些使用中的经验。 1)HMC5883L磁力计的基础知识 磁力计是用来测量磁场强弱(也就…

Android 录音没有声音,设置AudioSource.VOICE_CALL直接MediaRecorder.start异常等系列问题

一、我的需求:来电后,我的三方应用主动开启录音,挂断后结束录音,查验音频 我遇到的问题:录制的音频没有声音。 通过各种尝试,结果如下 :设置不同的录音来源的效果 MediaRecorder API\创建MediaR…

Springboot 结合 MQTT、Redis ,对接硬件以及做消息分发,最佳实践

Springboot 结合 mqtt、redis对接硬件以及做消息分发,最佳实践 一,认识 需要了解EMQX 基本知识原理,不了解的可以查看我之间的博客,以及网上的资料,这里不在过多撰述。 二,开发思路 这里以对接雷达水位计…