如果你曾经找过公寓,你就会明白这个过程可能是多么令人沮丧。它不仅耗费时间,而且即使当你发现一个自己喜欢的公寓,你怎么知道它就是合适的公寓? 你可能在心里设定了目标预算和区域。但是,如果你和我是同一类人,那么你也许愿意做一些权衡。例如,我住在纽约市,那么靠近地铁站这样的便利设施毫无疑问是一个很大的加分项。但是,这点到底值多少钱?我是否应该拿有电梯的住所和靠近火车站的住所进行交换?步行到火车站多少分钟?抵得过走上楼梯吗?租房的时候,有几十个这样的问题需要考虑。那么,如何使用机器学习来帮助我们进行决策呢? 在 20 世纪 70 年代初,如果你想购买股票,就需要聘请经纪人,他们会收取你将近 1% 的固定佣金;如果你想购买一张机票,你需要联系旅行社代理,他们将赚取大约 7% 的佣金;如果你想出售一间房子,你会联系一个房地产代理,他们赚取 6% 的佣金。在 2016 年,你基本上可以免费地做前两者。而对于最后一项,情况仍然和 20 世纪 70 年代的一样,保持不变。 为什么是这种情况?更重要的是,这些与机器学习有什么关系?现实是,这一切都归结于数据,以及谁能够访问它。 你可能想象着通过API或爬取房地产网站,就能够很容易地访问珍贵的地产房源数据。你错了,如果你打算遵守这些网站的条款和条件的话。房地产数据受到房地产经纪人国家协会(NAR)的严格控制,由他们运行多项房源服务(MLS)。这是一种聚合房源数据的服务,只有经纪人和代理商可以使用它,而且还需要花费巨资。所以,可以想象,他们不太希望任何人都能大量地下载这些数据。 这是不幸的,因为开放这些数据无疑会催生许多有价值的消费者应用程序。对于占家庭预算最大比重的购买决策而言,这点看上去尤其重要。 话虽如此,也不是完全没有希望。虽然依据条款所言,直接从MLS提供商获取数据是被禁止的,但是我们可以利用第三方工具来拉取数据。 现在,我们来看一个有用的工具,它可以帮助我们获取所需的数据。 使用import.io抓取房源数据 有许多优秀的、基于Python的库用于抓取网页,包括requests、Beautiful Soup和Scrapy。为了达到此处的目的,我们将使用免费的替代方案: Import.io( 图 1 的图片来自 图1 他们所提供的数据是有关旧金山的,不过在我们的例子中将使用纽约。为了更换城市,需要使用我们感兴趣的数据所在的网址,来替换演示所提供的网址。 为了实现这点,我们可以打开一个单独的浏览器选项卡,并导航到Zillow.com。在那里执行一个公寓搜索。让我们将公寓搜索限制在曼哈顿地区,价格在 $1500 到 $3000 之间,如图 2 所示。 图2 一旦有结果返回,我们需要从浏览器地址栏中复制Zillow.com站点的URL,并将其粘贴到之前选项卡中import.io的提取框中。 复制图 2 中Zillow.com地址栏中的URL,并将其粘贴到import.io的提取框中,如图 3 所示。 图3 单击左上角的提取数据(Extract Data)按钮,你将看到一个结果表,只显示你想要的数据。 现在,我们可以通过单击“下载CSV”(Download CSV)按钮,轻松地下载这些数据。弹出的对话框会问我们需要下载多少页,从结果页可以看出在Zillow的搜索返回了 2640 条结果,我们需要下载 106 页来获得整个数据集。而Import.io仅仅允许我们下载 20 页,现在也只能如此了。 我们现在有一个包含 500 套公寓的数据集。来看看其中有什么。首先在Jupyter记事本中,使用 importpandasaspd 上述代码生成图 4 中的输出。 图4 最后一行df.columns为数据提供了列标题的输出。此外,让我们使用 图5 我们已经可以看出数据有一些缺失值(NaN)。需要多个操作来标准化此数据。数据集中的列(或者说是图 5 中转置后的行)表示了每个Zillow房源的单项数据。看起来似乎有两种类型的房源 一种类型是单个单元,而另一种类型是多个单元。 这两种类型可以在图 6 中看到。 图6 这两个房源对应于在Zillow.com上所看到的图像,如图 7 所示。 图7 拆分这些的关键是
现在来看看每种房源类型的数量。 len(mu) 上述代码生成以下输出。 161len(su) 上述代码生成以下输出。 339 由于大多数房源属于单一单元的类型,我们现在将从此开始。 接下来,我们需要将数据格式化为标准结构。例如,至少需要为卧室数、浴室数、平方英尺和地址各准备一列。 从之前的观察中可以发现,我们已经有一个清晰的价格列,那就是 卧室和浴室的数量以及平方英尺将需要一些解析,因为它们全都挤在单一的列中。让我们解决这个问题。 先来看一下该列。
上述代码生成如图 8 所示的输出。 图8 看上去,数据似乎总是包括卧室和浴室的数量,偶尔也会包含例如年份这样的额外信息。在我们继续解析之前,先来检验一下这个假设。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|