读书笔记:“集体智慧编程”之第三章:“发现群组”的 列聚类

本文介绍了列聚类的概念及其在博客数据分析中的应用,通过聚类单词发现常用组合。虽然在此示例中意义有限,但引发思考如何在音乐推荐项目中运用聚类,如计算歌曲相似度,保存每首歌的相似歌单,根据用户行为动态调整推荐策略,同时关注算法的实时响应速度。
摘要由CSDN通过智能技术生成

什么是列聚类?

对博客数据使用了分级聚类的方式分析,我们可以又学的一种聚类方式:列聚类。刚刚的分级聚类就是对行进行了一个聚类。行是什么?行就是一个又一个的博客名,列是什么?列就是一个又一个的单词,那么进行行聚类的时候,我们是根据单词的词频将不同的博客聚了一次类。当我们对单词进行聚类的时候,我们就称之为列聚类。


意义何在

正面回答,我们知道了哪些单词会时常一起使用。对于这个列子来讲,似乎没什么意义。

但是如何行是消费者,列是购买的物品,那么每一行将是某位客户购买某一个商品的数量的列表数组,此时,如果去统计购买的物品的聚类,就非常有意义了。曾经有一个尿布与啤酒的故事,这两个毫无关系的商品居然销售量居然有着正相关的关系。后来发现是父亲来买尿布的时候往往会就会为自己买上一点啤酒,很显然这非常有意义,可以进行捆绑销售。在货物的摆放方面也更加有意义。


博客的例子

还是沿用之前那个数据集blogdata.txt。实现过程其实非常简单,简直用一句话就能说清:帮行和列做一个对换,然后直接调用之前写的过的函数。就可以产生聚类的结果。

首先是行列对置的函数:
def rotatematrix(data):
    newdata=[]
    for i in range(len(data[0])):
        newrow=[data[j][i] for j in range(len(data))]
        newdata.append(newrow)
    return newdata

其他的都是调用了在分级聚类中使用过的代码。
执行以下代码可以得到结果:
blognames,words,data=readfile('blogdata.txt')
rdata=rotatematrix(data)
wordclust=hcluster(rdata)
drawdendrogram(wordclust,labels=words,jpeg='列聚类图.jpg')


结果是一幅图,首先看截取得其中的一部分。





我们可以看到,microsoft/software/windows和pro/mac/apple经常一起使用。相信在读这篇博客的人都知道上面留六个词的含义,当然software为什么会和windows经常一起用,看起来似乎有点不太合理,但是谁知道会不会又是像“尿布和啤酒”一样呢?

当然,并不是说图中所有词的聚类都具有意义,实际上,大多数恐怕都没有意义,或者看不出有什么意义。
最后得到的一张大图,由于csdn限制了图片宽度的像素。所以下一幅图看起来不完整,但是需要的朋友可以通过右键另存为图片观看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值