当前位置:网站首页>用TensorFlow预测纽约市AirBnB租赁价格
用TensorFlow预测纽约市AirBnB租赁价格
2020-11-06 01:14:00 【人工智能遇见磐创】
作者|TIMOTHY102 编译|VK 来源|Analytics Vidhya
介绍
Airbnb是一个在线市场,允许人们将自己的房产或空余房间出租给客人。每预订3位客人,收取12%和6%的佣金。
该公司自2009年成立以来,已从每年帮助2.1万名客人找到住处,发展到每年帮助600万人度假,目前在90个不同国家的34000个城市列出了惊人的80万套房产。
在本文中,我将使用Kaggle-newyorkcityairbnb开放数据集,尝试用TensorFlow建立一个神经网络模型来进行预测。
目标是建立一个合适的机器学习模型,能够预测未来住宿数据的价格。
在本文中,我将展示我创建的Jupyter Notebook。你可以在GitHub上找到它:https://github.com/Timothy102/Tensorflow-for-Airbnb-Prices
加载数据
首先,让我们看看如何加载数据。我们用wget直接从Kaggle网站上获取数据。注意-o标志表示文件名。

数据集应该如下所示。共有48895行16列。

数据分析与预处理
Seaborn有一个非常简洁的API,可以为各种数据绘制各种图形。如果你对语法不太熟悉,可以查看本文:https://www.analyticsvidhya.com/blog/2019/09/comprehensive-data-visualization-guide-seaborn-python/
在pandas数据帧上使用corr之后,我们将其传递给一个heatmap函数。结果如下:

既然我们有经度和经度以及邻里数据,让我们创建一个散点图:

此外,我删除了重复项和一些不必要的列,并填写了“reviews_per_month”,因为它有太多的缺失值。数据看起来像这样。它有10列,没有零值:

很好,对吧?
首先,电脑是做数字的。这就是为什么我们要把分类列转换成一个one-hot编码的向量。这是使用pandas的factorize方法完成的。你可以使用很多其他工具:

为了使损失函数保持在稳定的范围内,让我们对一些数据进行规范化,使平均值为0,标准差为1。

特征交叉
我们必须做出一个改变,这是一个必不可少的改变。为了使经度和纬度与模型输出相关联,我们必须创建一个特征交叉。下面的链接应该为你提供足够的背景知识,使你能够正确地感受到特征交叉:
- https://developers.google.com/machine-learning/crash-course/feature-crosses/video-lecture
- https://www.kaggle.com/vikramtiwari/feature-crosses-tensorflow-mlcc
我们的目标是介绍经纬度交叉,这是本书中最古老的技巧之一。如果我们只将这两列作为值放入模型,它将假定这些值与输出逐步相关。
相反,我们将使用特征交叉,这意味着我们将把经度*经度地图分割成一个网格。幸运的是,TensorFlow使它变得容易。
我通过迭代(max-min)/100,从而生成一个分布均匀的帧网格。
我用的是100×100网格:

本质上,我们在这里所做的,是定义一个bucked列和前面定义的边界,并创建一个DenseFeatures层,然后将传递给Sequential API。
如果你不熟悉Tensorflow语法,请检查文档:https://www.tensorflow.org/api_docs/python/tf/feature_column/

现在,终于,我们为模型训练做好了准备。除了拆分数据部分,也就是说。

显然,我们必须创建两个数据集,一个包含所有数据,另一个包含预测得分。由于数据大小不匹配,这可能会给我们的模型带来问题,所以我决定截断太长的数据。

创建模型
最后,建立了Keras序列模型。
我们使用Adam优化器、均方误差损失和两个指标来编译模型。

此外,我们使用两个回调:
-
早停,这是不言而喻的
-
降低高原学习率。

经过50个epoch的训练,batch大小为64,我们的模型是相当成功的。

结尾
我们使用纽约市的AirBnB数据建立了一个全连接的神经网络来预测未来的价格。Pandas和seaborn使得可视化和检查数据变得非常容易。我们在模型中引入了经纬度交叉作为特征的思想。并且多亏了Kaggle的开放数据集,我们得到了一个完全可操作的机器学习模型。
原文链接:https://www.analyticsvidhya.com/blog/2020/10/predicting-nyc-airbnb-rental-prices-tensorflow/
欢迎关注磐创AI博客站: http://panchuang.net/
sklearn机器学习中文官方文档: http://sklearn123.com/
欢迎关注磐创博客资源汇总站: http://docs.panchuang.net/
版权声明
本文为[人工智能遇见磐创]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4253699/blog/4701578
边栏推荐
猜你喜欢

写一个通用的幂等组件,我觉得很有必要

如何在Windows Server 2012及更高版本中将域控制器降级

DeepWalk模型的简介与优缺点

不能再被问住了!ReentrantLock 源码、画图一起看一看!

nlp模型-bert从入门到精通(二)

滴滴 Elasticsearch 集群跨版本升级与平台重构之路

Probabilistic linear regression with uncertain weights

被产品经理怼了,线上出Bug为啥你不知道

链表的常见算法总结

Working principle of gradient descent algorithm in machine learning
随机推荐
7.3.1 file upload and zero XML registration interceptor
2个月再招10000人,字节跳动冲刺10万员工“小目标”
API 测试利器 WireMock
数据科学家与机器学习工程师的区别? - kdnuggets
Jmeter——ForEach Controller&Loop Controller
Working principle of gradient descent algorithm in machine learning
滴滴 Elasticsearch 集群跨版本升级与平台重构之路
mac 下常用快捷键,mac启动ftp
Probabilistic linear regression with uncertain weights
[译] 5个Vuex插件,给你的下个VueJS项目
使用Consul实现服务发现:instance-id自定义
python 下载模块加速实现记录
VUEJS开发规范
高级 Vue 组件模式 (3)
二叉树的常见算法总结
一文带你了解 Jest 单元测试
【jmeter】實現介面關聯的兩種方式:正則表示式提取器和json提取器
读取、创建和运行多个文件的3个Python技巧
Flink on PaaSTA:Yelp运行在Kubernetes上的新流处理平台
刚刚,给学妹普及了登录的两大绝学