利用神经网络进行波士顿房价预测

前言 前一阵学校有五一数模节校赛,和朋友一起参加做B题,波士顿房价预测,算是第一次自己动手实现一个简单的小网络吧,虽然很简单,但还是想记录一下。 题目介绍 波士顿住房数据由哈里森和鲁宾菲尔德于1978年Harrison and Rubinfeld1收集。它包括了波士顿大区每个调查行政区的506个观察值。1980年Belsley et al.2曾对此数据做过分析。 数据一共14列,每一列的含义分别如下: 英文简称 详细含义 CRIM 城镇的人均犯罪率 ZN 大于25,000平方英尺的地块的住宅用地比例。 INDUS 每个镇的非零售业务英亩的比例。 CHAS 查尔斯河虚拟变量(如果环河,则等于1;否则等于0) NOX 一氧化氮的浓度(百万分之几) RM 每个住宅的平均房间数 AGE 1940年之前建造的自有住房的比例 DIS 到五个波士顿就业中心的加权距离 RAD 径向公路通达性的指标 TAX 每一万美元的全值财产税率 PTRATIO 各镇的师生比率 B 计算方法为 $1000(B_k-0.63)^2$,其中Bk是按城镇划分的非裔美国人的比例 LSTAT 底层人口的百分比(%) price 自有住房数的中位数,单位(千美元) 基于上述数据,请完成以下问题: 建立波士顿房价预测模型并对预测结果进行评价。 问题分析 首先这道题目的很明确,数据一共是 $506×14$ 的一个矩阵,有十三维的自变量,通过建立一个模型来拟合回归出最终的因变量 price,即户主拥有住房价值的中位数。这是一个回归问题,综合考虑有以下两个思路 通过各种回归算法(GradientBoostingRegressor,RandomForestRegressor,ExtraTreesRegressor,LinearRegressor等)结合全部或部分自变量来回归最终的price 建立前馈神经网络模型,根据通用逼近定理,我们可以拟合此回归模型。 我们对上述模型来进行实现并确定评估标准来对他们进行比较,选择最优的模型作为预测模型。 算法流程 传统的回归算法 自变量的选择 首先,考虑到数据集中13列自变量其中某一些可能和最终的房价并无强相关性,如果全部使用进行预测可能会对模型引入噪声,因此我们首先计算了房价price与各个自变量之间的相关系数 $r$ ,其中 $r$ 计算公式如下: $$ r = \frac{\sum(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum(x_i-\bar{x})^2\sum(y_i-\bar{y})^2}} $$ 其中 $x_i,y_i$ 为数据的每个分量,$\bar{x},\bar{y}$ 为数据的均值 该系数反映了两变量之间的相关性,$r$ 的绝对值介于 $[0,1]$ 区间内,$|r|$ 越接近1,表示两数据相关性越高,反之越低。计算后结果如下: ...

May 16, 2021 · zzsqwq

如何使用CenterNet做3D目标检测测试

CenterNet—Objects as Points介绍 ​CenterNet是一个anchor-free的目标检测网络,与YOLOv3相比,精度有所提升,此外他不仅能够用于2D目标检测,也能够用于人体姿态识别,3D目标检测等··· 安装CenterNet ​其实安装CenterNet的过程就是一个配置环境的问题,直接跟着官方给出的这里Install.md配置一下即可,十分推荐使用Conda来管理环境,这里给出我的环境给大家参考一下: Ubuntu = 18.04 LTS pytorch = 1.2.0 python = 3.6.12 torchvision = 0.4.0 cuda = 10.2 ​需要注意的是: 官方给出的教程里面使用的是 pytorch 0.4.1,但是我个人在实测过程中遇到了一些问题,遂安装网上的教程更改为 pytorch 1.2.0,并且需要把 ${CenterNet_Root}/src/lib/models/networks/DCNv2 中的这个DCNv2网络更改为官方的最新版。 这里使用的cuda版本最好和你的显卡匹配,之前因为显卡驱动的一些问题导致重装了电脑,根据我们学长学姐的建议,最好直接去cuda官网那边去下载deb包直接安装。 遇到环境配置问题可以先去Google一下,一般作者都在CenterNet’s Issues中给出了回复,如果没有,可以发邮件给作者询问,当然也可以发消息/邮箱给我,大家一起探讨一下~ 运行CenterNet的demo ​想要运行demo,首先要去 Model zoo 中下载一下我们需要使用的model,2D目标检测使用的是 ctdet_coco_dla_2x.pth ,人体姿态评估使用的是 multi_pose_dla_3x.pth ,下载后统一将他们放在CenterNet根目录中的model文件夹中。 ​然后使用conda切换到CenterNet的环境,在终端中运行: python demo.py ctdet --demo ${CenterNet_Root}/images/17790319373_bd19b24cfc_k.jpg --load_model ../models/ctdet_coco_dla_2x.pth ​这里需要注意的是 --demo 后面的 ${CenterNet_Root}/images/17790319373_bd19b24cfc_k.jpg ,这里我使用的是官方给出的实例图片,它位于CenterNet根目录的images文件夹中,前面的 ${CenterNet_Root} 代表的是 CenterNet根目录,好比我的就位于 /home/zs/CenterNet 。 ​如果不出意外的话效果应该如下图所示: 运行CenterNet的3D目标检测 配置数据集和模型 ​我们可以直接参考官方的 DATA.md 来配置我们的数据集。 ​然后到 Model zoo 下载3D检测使用的模型 ddd_3dop.pth 。 ​这里说一下遇到的几个坑: 首先是配置数据集的过程中,我们需要配置的目录结构如图所示(官方给出的结构树有点模糊不清的感觉) . ├── ImageSets_3dop │ ├── test.txt │ ├── train.txt │ ├── trainval.txt │ └── val.txt ├── ImageSets_subcnn │ ├── test.txt │ ├── train.txt │ ├── trainval.txt │ └── val.txt └── training ├── calib ├── image_2 └── label_2 然后去到 ${CenterNet_ROOT}/src/tools目录下,运行 python convert_kitti_to_coco.py 将 kitti 数据集转换为 coco 数据集的格式,不出意外应该会报错如下: ...

January 27, 2021 · zzsqwq