python数据挖掘:能不能找出吃货最佳住宿点?

这次我爬出了哈尔滨市TOP285家好吃的店,包括烧烤的TOP,饺子的TOP,酱骨的TOP等等等等,在地图上显示,规划热点,再用聚类算法计算下能不能找出吃货最佳的住宿点,能够距离吃的各个地方行程最近,吃货们,准备好了吗?

回复公众号"吃货" 获取更多源码。

目的

可视化美食热点,规划各类美食聚集点,规划行程。

准备食材

首先,我不对这次排行的可信度负责,我只是直接百度的top餐厅,里面的水分大家自己掂量,甩锅给哈尔滨美食最新榜出炉,史上最强300家美食满足你各种挑剔!

http://www.360doc.com/content/16/0504/20/1097634_556278017.shtml

大概是这样的

这次我用静态爬发现被拦截了,mdzz,然后我就直接上selenium+Firefox,至于为什么不上PhantomJS,我这里说下,有时候PhantomJS爬的内容没有Firefox全,或许有人跳出来说,你个sb,他两是一样的啊,而且PhantomJS更加省内存,呵呵,你自己去试试就知道了,我不止一次在爬动态的时候PhantomJS遇到问题而Firefox没有问题的,连xpath都一样,就换了个无头,就不行了,我也有看到Stack Overflow上遇到同样问题的,可能是我手法不够吧,或许是我真的理解错了,到时候我自来认错。

清洗食材

刚爬下来的数据肯定不能直接用的,又是空格又是序列的,处理的方法很多,可以用正则,sub换空格,然后splite切割,组成列表再取,洗的方法很多,具体看数据是怎么样的,洗完后放进冰箱,啊不是,放进txt或者保存为csv,xls都可以的呢~

注意点

有些数据,大概三四个,我清洗完之后发现有错误,比如洗出个空格,额。。。。我尝试用try,except检测错误,查看原始数据,发现源链接中的js写的不标准造成的,哎,手动改好,再清洗一遍,不要刻意为了这一两个数据重写清洗算法,不就是sb了想着全自动一步成型,我咋不上天啊。。。


食材腌制-定位经纬度

通过地址转换得到相应的经纬度,得到的数据格式有两种如下所示

左一为地址+经纬度,逗号隔开,右一为经纬度,空格隔开,为什么要生成两个格式?因为我喜欢啊,哈哈哈


食材保存–转化CSV

直接右键另存为,然后保存格式为.csv即可,有人说,为什么不用csv的写入方法啊,因为我懒啊,我懒得重新构造字典了,这里甩上一段可以写入中文的csv格式。

弄完之后大概是这样的就可以下锅了


烹饪食材–聚类处理

我们要用的数据集是空格隔开的,至于为什么空格隔开的经纬度数据,因为我以前写好的bikmeans里面输入项就是就是酱紫的,空格用正则比较好处理,用个list装下Obj.[0],[1]立马出来值了,至于Kmeans是啥,怎么用,请看

【Python】爬虫+ K-means 聚类分析电影海报主色

,这里处理完后,我随机设置了5,10,15,20四种聚类点,观察各种效果。代码我在附录放上,参考的可以直接取附录找。聚类处理之后依旧保存如上一步的一张图形式,之后就可以开始可视化了!

佳肴摆上桌–数据可视化

枯燥的数据让人很难受,根本分析不出什么来,而且看着枯燥,这里我用了地图无忧这个网页版,虽然只有七天免费期,哎,辛辛苦苦画的图以后不能用了,(如果有谁知道还有类似的批量经纬度点转化图的软件请告诉我一下)真蛋疼.

具体的操作,直接看教程很简单的,我就是建图层,然后图层上批量放入经纬度,它就能转化成地图上的点,很好玩,看个动图,这是我把点放上的效果。


享用佳肴–分析数据

  • 先看下各种分布把,这个是热力图
  • 这个是点阵图
  • 把聚类的点加上,选了聚类点为15个

有些点不错,但是有些点太扯了把,貌似不是kmeans的宗旨的,他是为了找距离各热点最近的平衡点啊,是聚类点啊,但是有几个点明显不是了,查看原因。

问题所在:可以看出来,上面的点分布原因因为这些离散点的存在,我看了最远的点,亚布力滑雪场,的确有家店不错,额,可是我不考虑,我要是在市区玩,我还想去那么远的地方?明显不合理,所以我需要的是真的热点区域,也就是第二幅的那样,所以又要重新洗一下数据了,把离散点也就是噪声去掉!

烧糊了–重新来

虽然整体上来说,这个算法没错,但是如果对具体问题,比如说,我就想知道哈尔滨市内有什么比较好吃的,我懒得动,不会跑到江北或者更远的地方去吃,而且交通不方便,所以就要对经纬度集合进行切割,我找了合适返回,规定为经度范围126.56571~126.706807,纬度返回45.706283~45.802307,主程序中添加LockHotArea子函数,进行再一次过滤即可。

之后步骤重回前面的,最后的效果就是这样的


回锅肉–再分析数据

这回应该没有问题了,所以开始分析图吧


  • 这里上20个聚类点的情况
  • 可以看出,聚类点的分布基本都在热点区域,说明比较符合情况,但是K的值并不很能确定,需要多次试验k值

  • cluster15,这些点就有点尴尬了。能说明什么?可能是住宿的最佳点把,因为离各个好吃的距离是比较近的,这本来就是kmeans的核心。

  • cluster10的时候,聚类点就开始有点夸张了,虽说很多仍在热力分布上,但是,有一些明显不在热力辐射返回内,但对于能吃遍各个周围美食的人来说,仍然值得参考(这里不涉及代步工具)

  • cluster5的时候,只能算是顾全大局式的选择离热点最近的点了,好坏需要自己判断

回锅肉上的一颗花椒–单点分析

这里我把24个TOP数据都摆上了图层,可以清晰的看出这些好吃的都分布在哪,这里放上几张示范图,具体自己想看的,可以自己吃货的地图自己定位

以包子TOP为例

  • 把包子的经纬度单独拿出来做聚类,分析出,喜欢吃包子的人住在哪才能更方便的吃上包子!
  • 从上面的聚类点也可以看出,道外区是最多包子铺的,张包铺我也去吃过,排骨包里面真的有排骨!差点没把牙磕坏了,,,,跑题了,距离更多包子铺最近的点已经给出,和辐射区范围接近,这里更适合做中转站,因为去各个包子铺都是最近的!
  • 可以从图像自带缓冲区看重叠部分,看包子热点

所以综上所述,喜欢吃包子的吃货,可以选择以上的点当做中转点或者住宿点,到哪个包子铺都是比较近的,但是!!!谁会一天三餐加夜宵都吃包子??开个玩笑哈

更多组合

喜欢吃什么,任君挑选,比如说,你又喜欢吃饺子又喜欢串串香,没问题,看看他们都在哪。聚类我没做,懒。和做包子聚类点类似,先把饺子的经纬度和串串香经纬度挑出来,再进行聚类即可


  • 再比如包子和扒肉你都喜欢,那么看看重合区,不愧是老道外,真的是美食天堂啊!

  • 人气最高&口味最好~这个,额,我一家都没去过。。。。不做分析。。。

  • 当然,你还有不可兼得的烧烤&酸菜,哭

图就到这,更多美食大家自己去发现,点开图层就可以了~

Pay Atterntion

1.再进行对热点区域的切割的时候,需要比较阈值,出现了错误,测试发现原来类型错误,比较错误,如下演示。

2.调用API经度误差的问题,具体演示这里,误差我看了一下。能调用的API精度误差大概百米多,没办法,能免费调用的API大家都懂的。

当然,很多都是比较准确的,比如这些。

总结

最终住哪,这不是我能决定的,主要还是靠交通,住宿环境和个人心情,推荐住在地铁附近,吃货可以选择在中央大街附近,最繁华,也里老道外很近,好吃的很多~诶,等等,我不是在做学术研究么。。

附录–代码

这是核心程序,调用的API_get子程序太长了.

回复公众号"吃货" 获取更多源码。

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2017-08-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏牛客网

京东Java岗面经

1610
来自专栏Python与爬虫

[资源分享]计算机科学速成课

推荐 程序员的你一定要看,不是程序员的也可以看看,我已经安利刚中考完的我妹妹看了(培养程序媛...)

2373
来自专栏佳爷的后花媛

Computer E 第一期 d1.1.0

有很多小伙伴初期想学习语法,这里有相关资料,可以参考参考 英语工具书 密码: 44iv

1243
来自专栏思影科技

《大话脑成像》系列之十——计算机存取MRI影像的那些事

昨天,小芳(隔壁村的)问笔者:为什么我输出不了超过256个大脑区域? 乍一看,非常绕口。 今天的内容如果直接回答,恐怕绝大多数人要崩溃了,让我一步步给大家讲解,...

3437
来自专栏Crossin的编程教室

【每周一坑】图像的指纹:数字水印 + 【解答】鸡兔同笼

曾经有过这样的新闻:某公司的员工将内网论坛上的言论截屏发布到互联网上,引发了热议。于是公司通过截图定位到了员工的身份,将其开除。

1832
来自专栏程序人生

谈谈调度 - Linux O(1)

约莫十五年前,当我刚刚开始参加工作时,赶上 Linux 发布划时代的 2.6 内核。在这个大家都翘首期盼的内核版本中,最令人兴奋的便是 O(1) schedul...

3048
来自专栏企鹅号快讯

程序员的花样编程,你到底行不行?

【导读】:说到 C/C++ 代码技巧,也许会有童鞋说 ,这是属于 C/C++ 程序员离职前恶搞之类的抖机灵。即便想,也不能干。别忘了有这样一句编程名言:「在编写...

2355
来自专栏PPV课数据科学社区

【完整案例】如何用R实现空间数据可视化

image.png 流行病学的数据讲究“三间分布”,即人群分布、时间分布和空间分布。其中的“空间分布”最好是在地图上展示,才比较清楚。R软件集统计分析与高级...

1.2K7
来自专栏张俊红

你们要的代码来了

3818
来自专栏数据结构与算法

P1064 金明的预算方案

题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布...

3668

扫码关注云+社区

领取腾讯云代金券