数据挖掘-层次聚类·单身狗问题分析

是这样的,今天走在路上,我忽然想到一个问题:

假如世界上每个人,都有可能与若干个人发生姻缘,唯一的问题就在于你能不能遇到这个人;但每个人的魅力又是不同的,魅力非常棒的人因此非常容易脱单,魅力差的人则非常难以脱单,那么,如果将世上所有的人分类,会是一种什么样的结果呢?


>实验设计:

假设有大小为V的人群,他们中两两间可能产生姻缘的概率(不管他们此刻是否认识或有联系)服从函数F(love),当函数为真时,就输出一条边,如:" { 3 :: 8 } ",表示3和8之间有可能产生姻缘,显然这是一条无向边。

对某两个人如A与B节点进行分析,当他们间"姻缘边"指向的人数重合度越大时,我们就认为这个两个人是相近的,也就是说他们潜在的婚恋对象很可能是同一个人。

这里可以简单使用Jaccard距离进行表示,利用java语言,两三行set集合类的操作语句就能解决了:

unionSet.addAll(A);
unionSet.addAll(B);

intersectionSet.addAll(A);
intersectionSet.retainAll(B);

jaccard=intersectionSet.size()*1.0/unionSet.size();

然后,对获取的数据,进行层次聚类,将聚集后的输出输出到一个xls文件中,再利用Cytoscape软件可视化结果。

现在还剩一个问题,怎么确定F(love)函数呢?毕竟也没人统计过这个数据....Er,我觉得吧,这种玄学问题,就交给玄学数值0.618吧!:

RATE=(Math.sqrt(5)-1)/2;
if(Math.random() <= RATE ){
  builedEdge();
}



然后就让我们愉快地来计算结果吧!


>结果如下:



用circular图可能会更清楚一点:




>结果分析:

不怎么科学地分析一下,橙色点集合中,我查了一下基本属于姻缘边处于平均水平的人群,且这些人间的魅力值、关系度较为紧密,也就是说,大部分人处于这个集合中,大概,就是常说的凡人吧;

红色的有点特殊,我查看了原始数据,他们的关系度较其他点集合更为分散,甚至还出现了自恋的倾向,非要说的话,“怪胎”?

再往后,绿色、紫色、蓝色拥有较为平均的相似人群,也就是说,他们的对象的潜在人群大小相似,自成一个小圈子,这个应该是按领域来分布的,比如说,二次元、高学历人群、农村居民等。而魅力值(以姻缘边数目计),依次呈现下降状态;

然后是深绿颜色,这部分点特殊的一点是,他们都是极高魅力或是极低魅力的人群,同样,有着相似数目的潜在姻缘人群;所以社交达人永远和小透明不可能在一起了么..

最后是粉色,粉色部分看不出有啥特殊之处,不过可以看到他们的离散程度非常分数,基本是可以认为是这辈子都找不到对象了...

模拟所用的数据下载:

http://download.csdn.net/detail/shenpibaipao/9847254


哈哈哈,挺好玩的其实。学习不一定是为了学而学。

程序员还是很厉害的,有时候还可以模拟一下单身问题,然后对着一屏幕代码默默流泪...




最后补充一些好看的Cytoscape图吧,Cytoscape是个好东西,不妨一试:







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值