博客地址:http://andyheart.me,首先会更新本人自己的博客,然后更新CSDN。
有错误之处,请私信或者评论,多谢。
概念
数据聚类:一种用以寻找紧密相关的事、人或观点,并将其可视化的方法。目的是采集数据,然后从中找出不同的群组。
监督学习:利用样本输入和期望输出来学习如何预测的技术。例如,神经网络,决策树,支持向量机,贝叶斯过滤。
无监督学习:在一组数据中找寻某种结构,数据本身不是我们要找的答案。
分级聚类:通过连续不断地将最为相似的群组两两合并,来构造出一个群组的层级结构。其中的每个群组都是从单一元素开始的。
K均值聚类:首先随机确定K个中心位置,然后将各个数据项分配给最邻近的中心点。待分配完成之后,聚类中心就会移到分配给该聚类的所有节点的平均位置,然后分配过程重新开始。一直重复直到分配过程不再产生变化为止。
主要内容
- 从各种不同的来源中构造算法所需的数据;
- 两种不同的聚类算法(分级聚类和K-均值聚类);
- 更多有关距离度量的知识;
- 简单的图形可视化代码,用以观察所生成的群组;
- 将异常复杂的数据集投影到二维空间中。
示例
对博客用户进行分类
根据单词出现的频度对博客进行聚类,可以分析出经常撰写相似主题的人。
(一)对订阅源中的单词进行计数
RSS订阅源 是一个包含博客及其所有文章条目信息的简单的XML文档。为了给单词计数,首先应该解析这些订阅源,可以利用Universal Feed Parser。
代码解释: 这一部分主要是为了得到将要进行处理的数据集。代码由
python
实现文件为generatefeedvector
。主要流程为:利用Universal Feed Parser
将从feedlist.txt
中列表的地址中得到的RSS源一一解析得到标题和文章条目从而从中分离到word再计数。
Python代码如下:
import feedparser
import re
# Returns title and dictionary of word counts for an RSS feed
def getwordcounts(url):
# Parse the feed
d=feedparser.parse(url)
wc={}
# Loop over all the entries
for e in d.entries:
if 'summary' in e: summary=e.