机器学习实战——波士顿房价预测

news2025/4/25 16:45:02

波士顿房价预测

波士顿房地产市场竞争激烈,而你想成为该地区最好的房地产经纪人。为了更好地与同行竞争,你决定运用机器学习的一些基本概念,帮助客户为自己的房产定下最佳售价。幸运的是,你找到了波士顿房价的数据集,里面聚合了波士顿郊区包含多个特征维度的房价数据。你的任务是用可用的工具进行统计分析,并基于分析建立优化模型。这个模型将用来为你的客户评估房产的最佳售价。

数据集介绍

在这里插入图片描述

导入包

import pandas as pd
import numpy as np
import seaborn as sns
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.ensemble import AdaBoostRegressor, RandomForestRegressor, GradientBoostingRegressor
from sklearn.model_selection import cross_val_score, GridSearchCV, cross_validate
from sklearn.neighbors import KNeighborsRegressor
from sklearn.linear_model import LinearRegression
from sklearn.svm import SVR
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt

读取数据

boston_dataset = pd.read_csv("boston_housing.csv", delimiter="\t", )
boston_dataset.head(3)
CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATMEDV
00.0063218.02.3100.5386.57565.24.0900129615.3396.904.9824.0
10.027310.07.0700.4696.42178.94.9671224217.8396.909.1421.6
20.027290.07.0700.4697.18561.14.9671224217.8392.834.0334.7

相关性检验

plt.figure(figsize=(10,8))
sns.heatmap(boston_dataset.corr(), annot=True)
sns.pairplot(boston_dataset, vars=["CRIM","ZN","INDUS","CHAS","NOX","RM","AGE","DIS","RAD","TAX","PTRATIO","B","LSTAT","MEDV"])
<seaborn.axisgrid.PairGrid at 0x1a52d0b8160>

在这里插入图片描述

划分数据集

ss = StandardScaler()
num_columns = boston_dataset.columns[0:-1]
X = ss.fit_transform(boston_dataset[num_columns])
y = boston_dataset["MEDV"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)
(404, 13) (102, 13) (404,) (102,)

模型选择

svm_model = SVR()  # 调用SVM模型
knn_model = KNeighborsRegressor(n_neighbors=3)  # K近邻
lr_model = LinearRegression()  # 逻辑回归
dt_model = DecisionTreeRegressor()  # 决策树
adaboost_model = AdaBoostRegressor()
rf_model = RandomForestRegressor()
gbdt_model = GradientBoostingRegressor()
model_list = [svm_model, knn_model, lr_model, dt_model, adaboost_model, rf_model, gbdt_model]

scores_df = pd.DataFrame()
for i, model in enumerate(model_list):
    scores = cross_val_score(model, X, y, cv=5)

    scores_df.loc[i, "mean_score"] = np.mean(scores)
scores_df.index = pd.Series(
    ["svm_model", "knn_model", "lr_model", "dt_model", "adaboost_model", "rf_model", "gbdt_model"])
scores_df
mean_score
svm_model0.270768
knn_model0.457022
lr_model0.353276
dt_model0.161991
adaboost_model0.575771
rf_model0.630923
gbdt_model0.680006

参数调优

param_list = np.arange(start=10, stop=100, step=20, dtype=np.int64)
param_test = {"n_estimators": param_list,"max_depth": param_list}
gsearch = GridSearchCV(estimator=RandomForestRegressor(), param_grid=param_test, cv=3)
gsearch.fit(X, y)
gsearch.best_params_, gsearch.best_score_
({'max_depth': 30, 'n_estimators': 10}, 0.5695856170057815)

模型评估(随机森林vs线性回归)


rf_model = RandomForestRegressor(n_estimators=gsearch.best_params_["n_estimators"], max_depth=gsearch.best_params_["max_depth"], n_jobs=-1, random_state=47)
rf_model.fit(X_train, y_train)
print(rf_model.score(X_train, y_train))
print(rf_model.score(X_test, y_test))

lr_model = LinearRegression()
lr_model.fit(X_train, y_train)
print(lr_model.score(X_train, y_train))
print(lr_model.score(X_test, y_test))
0.9558480053735636
0.8634121285433521
0.7398903643970363
0.7306972896584056
y_pred = rf_model.predict(X)
pred_truth = pd.DataFrame()
pred_truth["pred"]=y_pred
pred_truth["truth"]=y
pred_truth.plot()
<Axes: >

在这里插入图片描述

plt.scatter(y, y_pred,label='y')
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'k--', lw=4,label='predicted')
[<matplotlib.lines.Line2D at 0x1a53232c700>]

在这里插入图片描述


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

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

相关文章

tabBar的使用

参考Api&#xff1a;全局配置 | 微信开放文档 (qq.com) 1.使用说明 2.使用详情 3.使用案例 在全局配置的app.json中 "tabBar": {"color": "#333","selectedColor": "#d43c33","backgroundColor": "#fff&qu…

【云原生】Kubernetes控制器中StatefulSet的使用

目录 1 什么是 StatefulSet 2 StatefulSet 特点 3 限制 4 使用 StatefulSet 1 搭建 NFS 服务 2 客户端测试 3 使用 statefulset 1 什么是 StatefulSet 官方地址&#xff1a; StatefulSet | Kubernetes StatefulSet 是用来管理有状态应用的工作负载 API 对象。 无状态应…

半年报增幅超预期,但汤臣倍健还是喂不饱年轻人?

文|琥珀消研社 作者|朱古力 谁也想不到&#xff0c;进入三伏天以后首个运动潮流会是“晒背”。 小红书上近5万条“晒背”相关的笔记里&#xff0c;多数都是对“什么时候晒背”、“晒多久合适”等入门级问题的答疑解惑&#xff0c;微博热搜词条更是针对性地给出了“晒背最佳时…

小程序如何自定义分享内容

小程序项目中遇到门票转增功能&#xff0c;用户可将自己购买的门票分享给好友&#xff0c;好友成功领取即得门票一张 1.自定义分享按钮 通过button里的open-type属性里的share参数即自可定义分享按钮 <button open-type"share">分享</button>2.配置分…

使用 Torchvision 探测器进行实时深度排序

在实际应用中,跟踪是对象检测中最重要的组成部分之一。如果没有跟踪,实时监控和自动驾驶系统等应用就无法充分发挥其潜力。无论是人还是车辆,物体跟踪都起着重要作用。然而,测试大量的检测模型和重新识别模型是很麻烦的。为此,我们将使用 Deep SORT 和 Torchvision 检测器…

电路累积(放过压防反接、IIC、锂电池保护板)

一.防过压防反接电路 简单的过压保护电路一般加个TVS可以实现&#xff0c;当外部有瞬间高能量冲击时候它能够把这股能量抑制下来&#xff0c;虽然功率高&#xff0c;上千W都可以&#xff0c;但是维持抑制的时间很短很短&#xff0c;万一器件损坏或者长时间工作电压高于正常工作…

python入门篇03 基础案例 python版与java版 语法不同之处

目录 1. 前言: -> 上篇传送门: python入门篇02 python的语法基础 2. 案例: pzy超市的收银系统(控制台输入版) -> 2.0 需求摘要: -> 2.1 python代码答案: <直接可以运行> -> 2.2 java代码答案: <必须有main方法> 2.3 两种代码运行的结果: (一样…

424. 替换后的最长重复字符

424. 替换后的最长重复字符 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 424. 替换后的最长重复字符 https://leetcode.cn/problems/longest-repeating-character-replacement/description/ 完成情况&#xff…

集群安装OpenFOAM

在个人电脑上安装比较简单&#xff0c;在服务器上安装多出几个步骤&#xff0c;需要首先安装boost库以及openmpi库 下面步骤主要参考这篇博文&#xff0c;这里我自己重复一遍。 1、安装包准备 1.1、首先是下载OF源码和第三方库&#xff0c;这里采用wget的方式下载 wget -O …

【golang】怎样判断一个变量的类型?

怎样判断一个变量的类型&#xff1f; package mainimport "fmt"var container []string{"zero", "one", "two"} func main() {container : map[int]string{0: "zero", 1: "one", 2: "two"}fmt.Printf…

为什么边缘计算一定会迎来大爆发?

边缘计算是指在靠近数据源和终端设备的边缘位置进行数据处理、分析和存储的一种计算模式&#xff0c;相对于传统的云计算中心&#xff0c;它将计算资源尽可能地靠近数据源和终端设备。工业物联网是物联网在工业领域的应用&#xff0c;其中边缘计算在工业物联网中扮演着至关重要…

带你了解—通过远程访问局域网服务区并进行数据采集【内网穿透】

文章目录 前言1.使用cpolar进行局域网数据采集的案例2.远程数据隧道功能 前言 cpolar作为一款轻便易用、功能强大的内网穿透软件&#xff0c;在很多应用场景中都能大显身手。其中最常见的&#xff0c;就是网络网站方面的应用。利用cpolar建立的数据隧道&#xff0c;能够轻松实…

网易互娱出海之旅:大数据平台上云架构设计与实践

2020 年初&#xff0c;随着网易互娱的海外业务增长与海外数据合规的需求&#xff0c;我们开始了网易互娱大数据离线计算平台迁移出海的工作。前期&#xff0c;我们采取了云主机裸机加上高性能 EBS 块存储的方案。但是&#xff0c;这个方案存储费用高昂&#xff0c;成本是国内自…

【强化学习】值函数算法DQNs详解【Vanilla DQN Double DQN Dueling DQN】

DQNs【Vanilla DQN & Double DQN & Dueling DQN】 文章目录 DQNs【Vanilla DQN & Double DQN & Dueling DQN】1. DQN及其变种介绍1.1 Vanilla DQN1.2 Double DQN1.3 Dueling DQN 2. Gym环境介绍2.1 Obseravtion Space2.2 Reward Function2.3 Action Space 3. D…

Vue3 :Pinia入门

Vue3 &#xff1a;Pinia入门 Date: May 11, 2023 Sum: Pinia概念、实现counter、getters、异步action、storeToRefs保持响应式解构 什么是Pinia Pinia 是 Vue 的专属状态管理库&#xff0c;可以实现跨组件或页面共享状态&#xff0c;是 vuex 状态管理工具的替代品&#xff0c…

晨控CK-GW06-E01与汇川H5U系列PLC通讯手册

晨控CK-GW06-E01与汇川H5U系列PLC通讯手册 晨控CK-GW06-E01是一款支持标准工业通讯协议 EtherNet IP 的网关控制器,方便用户集成到PLC等控制系统中。本控制器提供了网络 POE 供电和直流电源供电两种方式&#xff0c;确保用户在使用无 POE 供电功能的交换机时可采用外接电源供电…

18 | 淘宝用户行为分析

分析目的 本报告以淘宝app的用户消费行为数据为数据集,通过行业的指标对淘宝用户行为进行分析,从而探索淘宝用户的行为模式,具体指标包括: 日PV和日UV分析,付费率分析,复购行为分析,漏斗流失分析和用户价值RFM分析。为用户运营更好地解析和管理用户(例如对高价值用户的维…

SpringBoot+Vue3打造企业级一体化PaaS系统

目录 一、前言 二、PaaS的概念 三、PaaS中包含什么&#xff1f; 四、使用PaaS的优势 五、SpringBootVue3打造企业级PaaS系统 六、小结 一、前言 云计算的三种模型是PaaS&#xff0c;SaaS&#xff08;软件即服务&#xff09;和IaaS&#xff08;基础架构即服务&#xff09;。 Iaa…

陪跑多年,Postgres终崛起封王!(译)

Postgres开源数据库刚刚度过了它的25岁生日。遗憾的是&#xff0c;它既没有凭借数百万美元的风险投资脱颖而出&#xff0c;也没有获得技术布道师DevRel团队的支持&#xff0c;只处于起步阶段&#xff0c;但却一直在更新。 几个月之后&#xff0c;Postgres 16正式版可能会闪亮登…

Active Directory安全和风险状况管理

风险评估和管理 风险评估和管理是主动安全性和合规性管理不可或缺的一部分。 发现关键基础设施组件中的风险行为和配置对于阻止网络入侵和预防网络攻击至关重要。帐户泄露和配置错误漏洞是用于破坏网络的常见技术。当评估、监控和降低 Active Directory 基础架构的风险时&…