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

前言 前一阵学校有五一数模节校赛,和朋友一起参加做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

2021RoboMaster中国赛比赛记录

前言 ​说起来的话今天距离比赛已经过去近一个月了,比赛结束一直想要记录一下and总结一下经验,但是实在是太懒了,临近五一假期,在四月的末尾为这次中国赛画一个句号吧。 比赛过程 ​如果没记错的话比赛是3.30号(周二)去,4.1号(周四)结束,共三天。但是因为第三天没做什么有意义的事情,就只记录两天了。 第一天 ​第一天大概中午十点到的吧,去的时候登记完领了牌,就在当地布置场地了。到了场地上才发现,我们好像是拿的东西最多的,包括外接显示屏和集成主机,好像都基本没人带过去····集成主机拿了过去也没怎么用到,本来预想用到的哨岗相机因为 ROS 的通信问题也没能跑成,最后两个机器人还是各跑各的策略了。 ​调试的时候出了一点问题,两个哨岗相机通过20m的USB延长线后,只有一个能连接,后来排查了一下,好像是因为有一条线是光纤USB3.0的线,跟相机的接口不兼容···这个问题还没想好怎么解决,可能会考虑到时候自己带一根USB延长线过去。 ​犹记得调试的时候是和青海大学一起调的,有点可惜的是调试中的我方机器人一直在一个地方鬼畜。那晚上我记得大家熬到了很晚···很可惜的视觉因为用的是学习的框架可调性很差,并没有帮上太大的忙。 第二天 ​第二天记得一共有三场比赛,分别是打哈工大,哈工大深圳,以及青海大学。 ​在比赛过程中其实对视觉,我没有做太多的调整,主要还是大家在写导航和策略相关的东西吧。 ​跟哈工大打的那一场二车因为没有写好启动判定被罚下了,一车因为点位有问题一直卡在障碍物上。 ​跟哈工深和哈工大两场之间还隔了挺长时间,一个上午是一个下午,中间大家调试了很久,幸好在下午和哈工深打的时候基本没有鬼畜,可以正常的对局,只是因为实力不够强,很明显的一个问题就是视觉做的有问题吧,很多时间在朝着自己的队友打,还有就是会朝着场外的人员打,这是需要改进的点。 ​跟青海大学打的那场,距和哈工深比赛结束只有十几分钟的间隔时间,大家调了一个小bug就又重新赶去检录了,虽然当时已知青海大学的战术是站在原地不动的,但是由于不知道哪里出问题了,比赛中前一分钟两车都没动,后一分钟二车虽然动起来了去吃了加成区,但是因为定位的一些问题,没有看到敌方机器人并且撞墙了··自己撞掉了60血,最后还是败了QAQ。 ​所以就很耻辱的被3:0送走了,这样就结束了比赛日程。 ​值得反思的事情很多吧,赛前虽然基本熬了一个多星期来调车,还是只在最后一天才开始连裁判系统联调,包括暑假效率不高等问题都是值得反思的···打完比赛心中大概已经有了一些改进点,也想把自己的一些调车心得等记录下来,但是因为时间以及学业上的一些事情等一直没去做,本来计划的五月初做好改进的视觉也一直没兑现,希望这个五一假期会有较大的突破吧,不过还要打数模···好累,不想动。 最后,这一天还拿到了和Charm young的合照,还挺动容的,之前看Robomaster的一个宣传标语就是让工程师们成为明星,给他们一个展示的舞台,看到大家对Charm young的热情,深深的感受到了这一点。

April 30, 2021 · zzsqwq

关于Anaconda中pip路径指向问题

前言 最近使用Anaconda的时候遇到了一个很奇怪的问题,如当我新建环境 condatest 后,使用 pip -V 查看pip的路径指向,会发现pip指向的是另一个环境 CenterNet 的路径。搜索了很久得到一个有一些用的解决方法 解决方案 设有问题的环境为 condatest ,python版本为 3.6 然后进入 ~/anaconda3/envs/condatest/lib/python3.6 编辑目录下的 site.py 文件,将其中的 USER_SITE 的值修改为 /home/zs/anaconda3/envs/condatest ,注意这里路径里面的 zs 是你的当前用户名, USER_BASE 的值修改为 /home/zs/anaconda3/envs/condatest/lib/python3.6/site.py,然后问题应该就解决了。 因为如果环境问题的话,上面两个字符串都为空,猜测的原因是因为有同python版本的环境导致默认指向错误,此方式为修改conda中pip的指向。 参考链接 更改conda环境中的pip包安装的默认路径

March 6, 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

Git的简易教程

前言 最近在复习Git,因此顺手做个笔记分享出来,方便大家学习和查阅。相信无论是以后的课程作业还是工作,我们都会或多或少的接触/用到Git。 什么是Git? Git你可能没听说过,但是我相信你应该听说过Github,毕竟是全球最大的同性交友网站。他和Git有着密不可分的联系,我们后续再详细介绍。 Git的中文全称叫 分布式版本控制系统 ,版本控制系统是什么意思呢?我们举一个简单的例子,你在做一个大作业,很可能要写上千行的代码,但是你可能写完一个功能以后,对他不够满意,但是又害怕改了以后后悔了,又找不回来了,所以你可能就有很多版本,版本1,版本2,版本3等等等。Git就是解决这个问题的,让你文件能够保持最新,但是又能恢复到之前的版本。 那么既然有分布式版本控制系统,就有 集中式版本控制系统,前者的代表是 Git ,后者的代表有 SVN、CVS 等。 关于两者的区别,对于集中式版本控制系统,如果你想要对做一个项目的内容做修改,那么你要先从中央服务器把最近的版本拉取(Pull)下来,然后修改完以后,把修改后的版本推送(Push)上去,你本地只有最新的版本,而没有完整的版本库,分布式版本控制系统所作的工作与集中式的相差不大,只是它的本地会有一个完整的版本库,因此它十分的安全。 这里贴一个他人总结的区别,供大家参考。 Git的安装 Linux系统 因为我只用过Ubuntu,所以我只会Ubuntu的QAQ.. Ubuntu中安装Git只需要在终端中输入 sudo apt-get install git 即可。 如果是其他的linux系统,我猜你在终端中输入git即可获得安装提示,不然的话借助搜索引擎也可以。 Windows系统 直接去 Git官网 下载安装程序然后安装即可。关于安装时候的选项,我都是用的默认的。 Mac OS 太穷了,没用过Mac,但是参考链接中给出了方法,大家有需求可以参考。 Git的基本使用 Git可以做许多事情,好比版本更新,版本修改,提交到远程仓库等等,这里我们只写一写大概以后用的会比较多的。 需要注意的是,我们安装以后大概会有一个 Git GUI 还有一个 Git Bash ,开发中多用 Git Bash,下面的教程也是基于Git Bash的。 表明身份 在Git所有仓库中我们都要有一个所有者的身份,用于标识是谁的仓库,用如下方式标识 git config --global user.name "Your Name" git config --global user.email "Your email" 创建版本库 我们想要把一个文件夹的内容用git来管理,只需要在文件夹目录运行 git init 顾名思义这就是一个初始化的过程,运行以后在当前目录生成一个 .git 文件夹,里面是我们版本控制的数据,一般不要修改。 把文件添加到Git的暂存区 这里出现了 暂存区 这个名词,Git内部的逻辑大概把我们工作的过程分为了三部分 一个是 工作区 ,这个就是我们本地的文件夹。 一个是 暂存区 ,这是我们把文件暂时放到暂存区里,没有决定更新我们的版本。 一个是 最终分支,这就是我们最终的版本存放的位置。 贴一张廖雪峰老师教程中的一张图,我觉得还挺形象的。 ...

December 5, 2020 · zzsqwq