线性回归:波士顿房价

波士顿房价简述

波士顿房价问题是一个经典的机器学习问题,用于预测波士顿地区房屋的中位数价格。该问题涉及的数据集包含了506个样本,每个样本有13个特征指标,这些特征涵盖了城镇的各种社会经济和地理因素。以下是这些特征指标的简要描述:

CRIM:城镇的犯罪率(人均犯罪率)。
ZN:住宅用地超过25000平方英尺的比例。
INDUS:每个城镇的非零售商业用地比例。
CHAS:查尔斯河虚拟变量(如果房屋附近是查尔斯河,则为1;否则为0)。
NOX:一氧化氮浓度(每千万份)。
RM:每个住宅的平均房间数。
AGE:1940年之前建造的自住单位比例。
DIS:到波士顿五个就业中心的加权距离。
RAD:径向公路的可达性指数。
TAX:每10000美元的全价值财产税率。
PTRATIO:每个城镇的学生与教师比例。
B:计算公式为1000(Bk - 0.63)^2,其中Bk是城镇的黑人比例。
LSTAT:低收入人群的百分比。
这些特征指标涵盖了从社会安全(如犯罪率)到经济因素(如财产税率、黑人比例)再到地理位置(如到就业中心的距离)等多个方面,为预测波士顿地区的房价提供了丰富的信息。通过使用这些特征,可以应用各种机器学习算法(如线性回归、神经网络等)来构建预测模型,以预测给定特征下房屋的中位数价格。

代码实现思路

有些博文或者视频里用datasets.boston可以直接获取到506个样本数据,但是在新版本sklearn里取消了boston,所以此处提供了506条房价数据的txt文档
数据由506行,14列组成,前13列是影响房价的13个特征属性,最后1列是结果

  1. 将数据保存成数组
  2. 分理处506 * 13的X,506 * 1的y
  3. 选出80%作为训练数据,生成模型
  4. 将20%的X带入模型,生成y_predict
  5. 观察y_predict与20%的y_test
import numpy as np
from sklearn.linear_model import LinearRegression
import re# 不用科学计数法现实
np.set_printoptions(suppress=True)# 加载数据
def load_data(file_path):data = []ff = open(file_path).readlines()for item in ff:# 调用 re.sub("\s{2,}"," ",item) 函数,使用正则表达式将字符串中连续两个或多个空格替换为单个空格# 使用 strip() 函数去除字符串两端的空格和换行符out = re.sub("\s{2,}", " ", item).strip()temp = out.split(" ")# 将 data 列表转换为一个 NumPy 数组,并将所有元素的类型转换为 np.floattemp = np.array(temp).astype(np.float64)data.append(temp)data = np.array(data)return data# 生成训练数据
def genTrainData(data):# 打乱数据np.random.shuffle(data)# 把X,y分离出来# 特征数据:13个特征 w*xX = data[:, 0:13]# 目标数据y = data[:, 13]# 506个数据,用80%做线性回归,20%验证线性回归得到的模型(w, b)X_train = X[:406]y_train = y[:406]# 20%数据做测试X_test = X[406:]y_test = y[406:]return X_train, y_train, X_test, y_testdata = load_data("/Users/bmo/pks/boston.txt")
X_train, y_train, X_test, y_test = genTrainData(data)model = LinearRegression(fit_intercept=True)
model.fit(X_train, y_train)
# 获取斜率(权重)与截距
print(f"模型的斜率:{model.coef_},截距:{model.intercept_}")# 建模获取了斜率,有大有小,有正有负,表示什么?
#正:正相关,面积,越大,房价越高
#负:刚好相反,犯罪率,环境污染
y_predict = model.predict(X_test).round(2)pairs = [f"{a} <-> {b}" for a, b in zip(y_predict, y_test)]
print("[使用20%X的预测值y]与[20%真实值y]的对应关系:")
for pair in pairs:print(pair)
模型的斜率:[ -0.11225805   0.05053865   0.02966496   1.9157657  -17.100233843.61262367  -0.00209593  -1.4725001    0.3153099   -0.01313788-0.95864297   0.00968798  -0.51735275],截距:37.56398728469011
[使用20%X的预测值y][20%真实值y]的对应关系:['3.72 <-> 8.8', '18.44 <-> 10.9', '28.43 <-> 28.0', '34.98 <-> 30.1', '12.85 <-> 10.5', '9.91 <-> 8.3', '18.54 <-> 19.5', '34.38 <-> 31.0', '28.46 <-> 33.4', '24.32 <-> 23.4', '20.76 <-> 21.0', '32.14 <-> 27.9', '30.78 <-> 32.9', '16.52 <-> 13.8', '34.59 <-> 37.3', '30.62 <-> 28.7', '8.14 <-> 5.0', '16.49 <-> 17.6', '18.96 <-> 17.8', '22.63 <-> 25.0', '33.23 <-> 36.1', '35.45 <-> 32.4', '23.17 <-> 22.9', '18.03 <-> 14.5', '15.22 <-> 15.4', '17.37 <-> 15.1', '19.28 <-> 18.2', '30.37 <-> 34.7', '39.27 <-> 50.0', '40.58 <-> 50.0', '14.37 <-> 13.1', '28.61 <-> 22.8', '25.59 <-> 24.1', '21.36 <-> 20.1', '6.5 <-> 10.5', '23.09 <-> 24.7', '36.38 <-> 36.0', '25.56 <-> 23.1', '24.6 <-> 21.7', '5.84 <-> 8.8', '15.53 <-> 16.6', '13.31 <-> 12.8', '15.06 <-> 15.7', '18.2 <-> 14.2', '20.79 <-> 18.8', '17.83 <-> 7.2', '17.3 <-> 18.1', '23.89 <-> 20.1', '31.28 <-> 30.7', '28.34 <-> 25.0', '37.93 <-> 44.8', '19.41 <-> 19.6', '31.64 <-> 30.8', '24.29 <-> 21.9', '20.8 <-> 21.1', '26.59 <-> 22.6', '18.92 <-> 16.1', '11.14 <-> 23.1', '29.06 <-> 24.3', '19.42 <-> 19.9', '28.08 <-> 26.6', '19.57 <-> 18.5', '23.38 <-> 20.8', '31.75 <-> 29.1', '19.02 <-> 19.9', '16.33 <-> 10.2', '13.49 <-> 13.9', '31.83 <-> 32.2', '18.45 <-> 14.1', '22.58 <-> 21.1', '25.35 <-> 24.0', '22.45 <-> 23.2', '18.19 <-> 12.6', '31.94 <-> 33.2', '14.28 <-> 11.0', '20.39 <-> 20.4', '25.91 <-> 22.2', '6.53 <-> 13.8', '16.54 <-> 19.3', '22.86 <-> 24.4', '27.21 <-> 20.6', '8.8 <-> 8.7', '17.42 <-> 19.4', '36.52 <-> 50.0', '25.27 <-> 50.0', '43.27 <-> 50.0', '30.55 <-> 29.1', '21.21 <-> 19.3', '34.77 <-> 43.8', '24.03 <-> 22.2', '18.04 <-> 22.5', '29.36 <-> 25.0', '34.55 <-> 35.2', '33.86 <-> 32.0', '34.35 <-> 35.4', '26.96 <-> 22.1', '14.72 <-> 14.8', '22.3 <-> 22.0', '21.31 <-> 19.6', '28.57 <-> 24.4']
模型的得分:0.7799984355156543

模型评估打分

score = model.score(X_test, y_test)
print(f"模型的得分:{score}")
模型的得分:0.7801469895898483

score的值小于1,可以是负数。
score越接近1,模型的近似效果就越好。

score的算法:
The coefficient of determination :math:R^2 is defined as
:math: ( 1 − u v ) (1 - \frac{u}{v}) (1vu), where
:math:u is the residual sum of squares ((y_true - y_pred)** 2).sum() and
:math:v is the total sum of squares ((y_true - y_true.mean()) ** 2).sum().
The best possible score is 1.0 and it can be negative (because the
model can be arbitrarily worse). A constant model that always predicts
the expected value of y, disregarding the input features, would get
a :math:R^2 score of 0.0.

使用最小二乘法也能得到模型误差值

from sklearn.metrics import mean_squared_error
mea = mean_squared_error(y_test, y_predict)
print(f"模型的误差值:{mea}")
模型的误差值:14.743696000000005

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

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

相关文章

高并发项目-分布式Session解决方案

分布式Session解决方案 1.保存Session&#xff0c;进入商品列表页面 1.保存Session 1.编写工具类 1.MD5Util.java package com.sxs.seckill.utils;import org.apache.commons.codec.digest.DigestUtils;/*** Description: MD5加密工具类** Author sun* Create 2024/5/5 14…

安卓手机在开发者模式下 打开wifi调试功能的相关 adb 命令

文章目录 Intro前置条件确认好处 Intro 部分安卓手机的开发者模式中&#xff0c;只提供了 USB调试模式&#xff0c;却没有明显的 wifi调试模式的相关菜单。 前置条件 手机已经打开开发者模式已经安装好Android Studio&#xff0c;或者已经配置了adb工具的所在路径到了环境变…

云原生架构相关技术_1.容器技术

1.容器技术的背景与价值 容器作为标准化软件单元&#xff0c;它将应用及其所有依赖项打包&#xff0c;使应用不再受环境限制&#xff0c;在不同计算环境间快速、可靠地运行。容器部署模式与其他模式的比较如下图1所示。 图1 传统、虚拟化、容器部署模式比较 Docker容器基于操作…

在RT-Thread下为MPU手搓以太网MAC驱动-4

文章目录 MAC驱动里面对MDIO的支持MAC驱动与MDIO总线 这是个人驱动开发过程中做的一些记录&#xff0c;仅代表个人意见和理解&#xff0c;不喜勿喷 MAC驱动需要支持不同的PHY芯片 MAC驱动里面对MDIO的支持 在第一篇文章中提到对MAC设备做出了抽象&#xff0c;其中MAC抽象里面有…

形式参数和实际参数

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在调用函数时&#xff0c;大多数情况下&#xff0c;主调函数和被调用函数之间有数据传递关系&#xff0c;这就是有参数的函数形式。函数参数的作用是…

前端面试题日常练-day43 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末 1. 在Bootstrap中&#xff0c;以下哪个类用于创建一个具有响应式的栅格系统&#xff1f; a) .row b) .grid-system c) .container d) .responsive-grid 2. 哪个Bootstrap类用于创建一个具有圆角边框…

android-handlerThread

记住一点Handler是子线程到主线程&#xff0c;HandlerThread是主线程到子线程通信 一、HandlerThread简介 HandlerThread是一个轻量级的异步类&#xff0c;可以实现多线程&#xff0c;并且可以实现线程间的通信&#xff08;HandlerThread主要应用是实现主线程到子线程的通信&…

用于日常任务的实用 Python 脚本

Python 是一种多功能编程语言&#xff0c;以其简单易读而闻名。它广泛应用于从 Web 开发到数据分析等各个领域。Python 脚本&#xff0c;它们可以通过自动执行常见任务来使您的生活更轻松。 用于日常任务的实用 Python 脚本 1. 使用 Pandas 进行数据分析2. 使用 BeautifulSoup …

服务器怎么被远程桌面连接不上,远程桌面连接不上服务器的问题有效解决方案

远程桌面连接不上服务器是一个极其严重的问题&#xff0c;它可能直接影响到我们的工作效率、数据安全&#xff0c;甚至是整个业务运营的顺畅。因此&#xff0c;这个问题必须得到迅速且有效的解决。 当我们尝试远程桌面连接服务器时&#xff0c;可能会遇到连接不上的情况。这其中…

MFC:初步理解序列化与反序列化(含代码实现)

序列化与反序列化是MFC将对象数据以二进制数据流的形式进行存储和读取的机制&#xff0c;读、写的效率很高。通过序列化与反序列化&#xff0c;可以将程序中对象在内存中数据保存到文件 (磁盘) 或者从文件 (磁盘) 中读取到内存以恢复对象数据&#xff0c;从而实现程序对数据的持…

RxSwift - 实现一个MVVM架构的TableView

文章目录 RxSwift - 实现一个MVVM架构的TableView前沿MVVM架构的Tableview目录结构1、模型&#xff08;Model&#xff09;2、视图模型&#xff08;ViewModel&#xff09;3、视图&#xff08;View&#xff09; 界面效果 RxSwift - 实现一个MVVM架构的TableView 前沿 MVVM架构在…

分享一个实用的MySQL一键巡检脚本

今日分享一个实用的MySQL一键巡检脚本&#xff0c;脚本内容还不是很完善&#xff0c;后续会继续进行优化。大家可以先在测试环境执行&#xff0c;确认执行没问题后可以在生产环境进行操作&#xff0c;问题的可以私信我。 MySQL一键巡检脚本的作用主要是帮助数据库管理员快速且…

redux状态管理用法详解

在React中使用redux&#xff0c;官方要求安装俩个其他插件 - Redux Toolkit 和 react-redux 1.ReduxToolkit (RTK) 官方推荐编写 Redux 逻辑的方式&#xff0c;是一套工具的集合集&#xff0c;简化书写方式 简化 store 的配置方式&#xff1b; 内置 immer 支持…

dubbo复习:(19)dubbo 和spring整合(老古董)

一、服务端依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM…

华为SSH实验

华为SSH实验 实验拓扑&#xff1a; 实验要求&#xff1a;从SSH客户端AR1采用stelnet方式登录到SSH 服务器端。 实验步骤&#xff1a; 1.完成基本配置&#xff08;略&#xff09; sys Enter system view, return user view with CtrlZ. [AR1]sys CLIENT [CLIENT]INT g0/0/0 [C…

ECMAScript 详解:深入理解 JavaScript 的核心标准

ECMAScript 详解&#xff1a;深入理解 JavaScript 的核心标准 如果你是一名前端开发者&#xff0c;或者只是对编程感兴趣&#xff0c;那么你一定听说过 ECMAScript。它是 JavaScript 的标准&#xff0c;是现代 web 开发的基础。那么&#xff0c;究竟什么是 ECMAScript&#xf…

智能网联汽车翻译

智能网联汽车 自动驾驶功能场地试验方法及要求 2022-10-20 10:13:01 ChinaAutoRegs|GB/T 41798-2022英文版翻译 智能网联汽车 自动驾驶功能场地试验方法及要求 Intelligent and connected vehicles——Field testing methods and requirements for automated driving function…

打造你的首个QT 5计算器应用

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;QT 5的力量与我们的计算器 二、QT 5基础&#xff1a;理解UI设计与文件…

Java多线程(04)—— 保证线程安全的方法与线程安全的集合类

一、CAS 与原子类 1. CAS CAS&#xff08;compare and swap&#xff09;&#xff0c;是一条 cpu 指令&#xff0c;其含义为&#xff1a;CAS(M, A, B); M 表示内存&#xff0c;A 和 B 分别表示一个寄存器&#xff1b;如果 M 的值和 A 的值相同&#xff0c;则把 M 和 B 的值交…

数字IC基础:主要的FPGA厂商

相关阅读 数字IC基础https://blog.csdn.net/weixin_45791458/category_12365795.html?spm1001.2014.3001.5482 Xilinx&#xff08;现已被AMD收购&#xff09; Xilinx, 成立于1984年&#xff0c;是FPGA&#xff08;现场可编程门阵列&#xff09;技术的创始者和市场领导者。该公…