回归问题波士顿房价预测

线性回归API

sklearn.linear_model.LinearRegression(fit_intercept=True)

  • 正规方程优化
  • 参数:fit_intercept,是否计算偏置
  • 属性:LinearRegression.coef_ (回归系数) LinearRegression.intercept_(偏置)

 sklearn.linear_model.SGDRegressor(loss="squared_loss", fit_intercept=True, learning_rate ='constant', eta0=0.01)

  • SGDRegressor类实现了随机梯度下降学习,它支持不同的 损失函数和正则化惩罚项 来拟合线性回归模型。
  •  参数:loss(损失函数类型),fit_intercept(是否计算偏置)learning_rate (学习率)
  • 属性:SGDRegressor.coef_ (回归系数)SGDRegressor.intercept_ (偏置)

案例背景介绍 

波士顿房价预测数据集来源于1978年美国某经济学杂志,共包含506个数据点,涵盖了麻省波士顿不同郊区房屋13种特征的信息。这些特征包括: 

  1. CRIM:每个城镇人均犯罪率。
  2. ZN:占地面积超过25,000平方英尺的住宅用地比例。
  3. INDUS:非零售商用地百分比。
  4. CHAS:是否靠近查尔斯河(虚拟变量,1表示靠近,0表示不靠近)。
  5. NOX:氮氧化物浓度(百万分之一)。
  6. RM:住宅平均房间数目。
  7. AGE:1940年前建成自用单位比例。
  8. DIS:到5个波士顿就业服务中心的加权距离。
  9. RAD:无障碍径向高速公路指数。
  10. TAX:每万元物业税率。
  11. PTRATIO:小学师生比例。
  12. B:黑人比例指数。
  13. LSTAT:下层经济阶层比例。

需要注意的是从 scikit-learn 1.2 版本开始,波士顿房价数据集(Boston housing prices dataset)已被移除 ,可以使用较低版本的scikit-learn库。

 回归性能评估,均方误差(Mean Squared Error, MSE):

MSE = (1/n) * Σ(y_i - ŷ_i)^2

其中,n 表示样本数量,y_i 表示第 i 个样本的真实值,ŷ_i 表示第 i 个样本的预测值,Σ 表示求和。MSE 的值越小,表示模型的预测效果越好。MSE 的单位与预测值和真实值的单位相同,因此可以直接比较不同模型之间的性能。

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error
from sklearn.linear_model import SGDRegressor
from sklearn.linear_model import LinearRegression
def linear_model():
    """
    线性回归:梯度下降法
  
    """
    
    data = load_boston()

    
    x_train, x_test, y_train, y_test = train_test_split(data.data, data.target, random_state=22)

    
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.fit_transform(x_test)

    
    estimator = SGDRegressor(max_iter=1000)
    estimator.fit(x_train, y_train)

    
    y_predict = estimator.predict(x_test)
    print("预测值为:\n", y_predict)
    print("模型中的系数为:\n", estimator.coef_)
    print("模型中的偏置为:\n", estimator.intercept_)

    # 5.2 评价
    # 均方误差
    error = mean_squared_error(y_test, y_predict)
    print("误差为:\n", error)

    return None

 模型的保存和加载

 sklearn模型的保存和加载API import joblib

  • 保存:joblib.dump(estimator, 'test.pkl')
  • 加载:estimator = joblib.load('test.pkl')
joblib.dump(estimator, 'test.pkl')
estimator = joblib.load('test.pkl')
y_predict = estimator.predict(x_test)
print("预测值为:\n", y_predict)
print("模型中的系数为:\n", estimator.coef_)
print("模型中的偏置为:\n", estimator.intercept_)

总结:

  1. 导入所需的库和数据集:我们导入了 scikit-learn 的线性回归模型、SGD 优化器、数据集和其他辅助库。

  2. 加载波士顿房价数据集:我们使用 scikit-learn 的 load_boston 函数加载了波士顿房价数据集。

  3. 数据预处理:我们对数据集进行了预处理,包括将数据集分为训练集和测试集,以及对特征进行标准化。

  4. 创建线性回归模型:我们使用 scikit-learn 的 SGDRegressor 类创建了一个线性回归模型,并设置了优化器为随机梯度下降(SGD)。

  5. 训练模型:我们使用训练集对模型进行训练。

  6. 评估模型:我们使用测试集评估模型的性能,计算了均方误差(MSE)和均方根误差(RMSE)。

  7. 预测:我们使用训练好的模型对测试集进行预测,并与真实值进行比较。

 sklearn.linear_model.LinearRegression()和sklearn.linear_model.SGDRegressor()

都是线性回归模型,但它们的训练方法和性能有所不同。

  • sklearn.linear_model.LinearRegression():使用最小二乘法(Ordinary Least Squares, OLS)进行线性回归。在训练过程中,它通过最小化损失函数(均方误差)来找到最佳的权重和截距。

  • sklearn.linear_model.SGDRegressor():使用随机梯度下降(Stochastic Gradient Descent, SGD)进行线性回归。在训练过程中,它通过逐步更新权重和截距来最小化损失函数。

 性能:

  • sklearn.linear_model.LinearRegression():在大型数据集上,它可能需要较长时间进行训练,因为它需要计算整个数据集的梯度。

  • sklearn.linear_model.SGDRegressor():在大型数据集上,它的训练速度通常比 LinearRegression 快,因为它每次只使用一个样本来更新权重。这使得它在处理大型数据集时更加高效。

LinearRegression 和 SGDRegressor 都是线性回归模型,但它们的训练方法和性能有所不同。在选择合适的模型时,需要根据数据集的大小、特征数量以及训练时间等因素进行权衡。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024.1.23 GNSS 零散知识 学习笔记

1.天线种类 2.接收机 2.四大导航系统的介绍 3.卫星高度与轨道卫星种类 4.GNSS有哪些应用 5.在空间保持静⽌或匀速直线运动(⽆加速度)的坐标系称为惯性坐标系。 6.地⼼惯性坐标系实际上并没有满⾜能成为惯性坐标系的条件: ⾸先,地球及其质⼼都在围绕太阳…

《WebKit 技术内幕》学习之九(2): JavaScript引擎

2 V8引擎 2.1 基础 V8是一个开源项目,也是一个JavaScript引擎的实现。它最开始是由一些语言方面的专家设计出来的,后被Google收购,成为了JavaScript引擎和众多相关技术的引领者。其目的很简单,就是为了提高性能。因为在当时之前…

C++比较两个proto是否一样

参考:https://stackoverflow.com/questions/3228107/google-protocol-buffers-compare/32351914#32351914 #include <google/protobuf/util/message_differencer.h>MessageDifferencer::Equals(msg1, msg2);

dhcp服务器的ip池的待分配ip地址是否冲突的检测机制

看到有的资料说&#xff0c;dhcp服务器在分配ip地址时&#xff0c;要检测是否待分配的ip地址是否存在冲突&#xff0c;会向广播域发出&#xff0c;对应ip发出icmp的ping消息来验证是否冲突。特地用自己的公司的交换机验证一下&#xff0c;在交换机上镜像抓包观察一下。 wiresha…

【C++】位图+布隆过滤器

位图布隆过滤器 1.位图2.布隆过滤器 喜欢的点赞&#xff0c;收藏&#xff0c;关注一下把&#xff01; 1.位图 问: 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数中。 可能你会想到下面这几种方式&#…

【Python进阶编程】python编程高手常用的设计模式(持续更新中)

Python编程高手通常熟练运用各种设计模式&#xff0c;这些设计模式有助于提高代码的可维护性、可扩展性和重用性。 以下是一些Python编程高手常用的设计模式&#xff1a; 1.单例模式&#xff08;Singleton Pattern&#xff09; 确保一个类只有一个实例&#xff0c;并提供全局…

softmax回归实战-分类

1.数据集 MNIST数据集 (LeCun et al., 1998) 是图像分类中广泛使用的数据集之一&#xff0c;但作为基准数据集过于简单。 我们将使用类似但更复杂的Fashion-MNIST数据集 (Xiao et al., 2017)。 import torch import torchvision from torch.utils import data from torchvisi…

javaspringbootmysql开放实验室管理系统03361-计算机毕业设计项目选题推荐(附源码)

摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是使用动态网页开发技术java作为系统的开发语言&#xff0c;M…

如何把openwrt的ipk软件包安装到ubuntu上

前提&#xff1a;都是arm64的架构的软件包。 下载openwrt的ipk软件包 1. 从https://pkgs.org/ 查找下载软件包&#xff1a; 本文以swconfig软件包为例&#xff0c;下载swconfig和相关的依赖软件包&#xff1a; swconfig_12_aarch64_cortex-a72.ipk libuci20130104_2021-10-2…

eNSP学习——交换机基础

目录 原理概述 实验目的 实验步骤 实验内容 实验拓扑 实验步骤 基础配置 配置交换机双工模式 配置接口速率 思考题 原理概述 交换机之间通过以太网电接口对接时需要协商一些接口参数&#xff0c;比如速率、双工模式等。   接口速率&#xff1a;指的是交换机接口每秒钟传…

【操作系统】实验五 添加内核模块

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

apkpure下载Google Play中APP的APK安装包

比如Google Play上有个应用叫iSmart DV&#xff0c;想下载APK&#xff0c;怎么做呢 打开apkpure(https://apkpure.net/)&#xff0c;输入对应的app名称即可下载

Making Large Language Models Perform Better in Knowledge Graph Completion论文阅读

文章目录 摘要1.问题的提出引出当前研究的不足与问题KGC方法LLM幻觉现象解决方案 2.数据集和模型构建数据集模型方法基线方法任务模型方法基于LLM的KGC的知识前缀适配器知识前缀适配器 与其他结构信息引入方法对比 3.实验结果与分析结果分析&#xff1a;可移植性实验&#xff1…

Kafka-服务端-KafkaController

Broker能够处理来自KafkaController的LeaderAndIsrRequest、StopReplicaRequest、UpdateMetadataRequest等请求。 在Kafka集群的多个Broker中&#xff0c;有一个Broker会被选举为Controller Leader,负责管理整个集群中所有的分区和副本的状态。 例如&#xff1a;当某分区的Le…

第92讲:MySQL主从复制集群故障排查思路汇总

文章目录 1.从库I/O线程处于Connecting状态2.从库I/O线程处于No状态3.从库SQL线程处于No状态 1.从库I/O线程处于Connecting状态 从库的I/O线程处于Connection连接中的状态&#xff0c;一般都是连接不上主库导致&#xff1a; 可能由于网络不通&#xff0c;防火墙的干扰导致从库…

MongoDB系列之一文总结索引

概述 分类 索引的分类&#xff1a; 按照索引包含的字段数量&#xff0c;可分为单键索引&#xff08;单字段索引&#xff09;和组合索引&#xff08;联合索引、复合索引&#xff09;按照索引字段的类型&#xff0c;可以分为主键索引和非主键索引按照索引节点与物理记录的对应…

2024免费mathtype7.4.4安装注册步骤教程

数学建模中对公式的编辑有很高的要求&#xff0c;mathtype是一款专业的数学公式编辑工具&#xff0c;能够帮助用户在各种文档中插入复杂的数学公式和符号。 一 Mathtype 的下载安装 1.1 安装前须知 解压和安装前&#xff0c;需要将电脑的杀毒软件或者防火墙关掉&#xff0c;如…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-后台管理主页面实现

锋哥原创的SpringbootLayui python222网站实战&#xff1a; python222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火…

vue3跨域请求及一些常用配置

在使用vue3开发的时候&#xff0c;总免不了做一些基础的配置。比如跨域配置&#xff0c;一些常用函数的封装等等。接下来&#xff0c;我就做一些自己在在开发中所运用到一些常用配置。 一、跨域配置 其实&#xff0c;对于跨域配置&#xff0c;我之前的博文中也有说过&#xff0…

Linux的常见指令和基本操作演绎【复习篇章一】

文章目录 前言下载安装 XShellXShell 下的复制粘贴热键操作01.ls指令tree 02.cd指令03.touch指令04.mkdir指令&#xff08;重要&#xff09;&#xff1a;05.rmdir指令 && rm 指令&#xff08;重要&#xff09;06.组合07.man指令&#xff08;重要&#xff09;&#xff1…
最新文章