作者|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...
加载数据
首先,让咱们看看如何加载数据。咱们用wget间接从Kaggle网站上获取数据。留神-o标记示意文件名。
数据集应该如下所示。共有48895行16列。
数据分析与预处理
Seaborn有一个十分简洁的API,能够为各种数据绘制各种图形。如果你对语法不太熟悉,能够查看本文:https://www.analyticsvidhya.c...
在pandas数据帧上应用corr之后,咱们将其传递给一个heatmap函数。后果如下:
既然咱们有经度和经度以及邻里数据,让咱们创立一个散点图:
此外,我删除了反复项和一些不必要的列,并填写了“reviews_per_month”,因为它有太多的缺失值。数据看起来像这样。它有10列,没有零值:
很好,对吧?
首先,电脑是做数字的。这就是为什么咱们要把分类列转换成一个one-hot编码的向量。这是应用pandas的factorize办法实现的。你能够应用很多其余工具:
为了使损失函数放弃在稳固的范畴内,让咱们对一些数据进行规范化,使平均值为0,标准差为1。
特色穿插
咱们必须做出一个扭转,这是一个必不可少的扭转。为了使经度和纬度与模型输入相关联,咱们必须创立一个特色穿插。上面的链接应该为你提供足够的背景常识,使你可能正确地感触到特色穿插:
- https://developers.google.com...
- https://www.kaggle.com/vikram...
咱们的指标是介绍经纬度穿插,这是本书中最古老的技巧之一。如果咱们只将这两列作为值放入模型,它将假设这些值与输入逐渐相干。
相同,咱们将应用特色穿插,这意味着咱们将把经度*经度地图宰割成一个网格。侥幸的是,TensorFlow使它变得容易。
我通过迭代(max-min)/100,从而生成一个散布平均的帧网格。
我用的是100×100网格:
实质上,咱们在这里所做的,是定义一个bucked列和后面定义的边界,并创立一个DenseFeatures层,而后将传递给Sequential API。
如果你不相熟Tensorflow语法,请查看文档:https://www.tensorflow.org/ap...
当初,终于,咱们为模型训练做好了筹备。除了拆分数据局部,也就是说。
显然,咱们必须创立两个数据集,一个蕴含所有数据,另一个蕴含预测得分。因为数据大小不匹配,这可能会给咱们的模型带来问题,所以我决定截断太长的数据。
创立模型
最初,建设了Keras序列模型。
咱们应用Adam优化器、均方误差损失和两个指标来编译模型。
此外,咱们应用两个回调:
- 早停,这是显而易见的
- 升高高原学习率。
通过50个epoch的训练,batch大小为64,咱们的模型是相当胜利的。
结尾
咱们应用纽约市的AirBnB数据建设了一个全连贯的神经网络来预测将来的价格。Pandas和seaborn使得可视化和检查数据变得非常容易。咱们在模型中引入了经纬度穿插作为特色的思维。并且多亏了Kaggle的凋谢数据集,咱们失去了一个齐全可操作的机器学习模型。
原文链接:https://www.analyticsvidhya.c...
欢送关注磐创AI博客站:
http://panchuang.net/
sklearn机器学习中文官网文档:
http://sklearn123.com/
欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/