奇异值分解和聚类分析操作流程
1. 获取关键词,返回词典(key, value)格式数据,key为关键词,value为出现次数;
2. 获取所有新闻id和content,返回词典(key, value)格式数据,key为id,value为content;
3. 对关键词排序,统计出现频率大于1的关键词
4. 以关键词为行,新闻id为列构建二维数组
5. 统计关键词在content中出现的次数,完善二维数组,结果如图1所示
图1 词频统计数据
6. 将二维数组看作一个mxn的矩阵,将二维数组进行奇异值分解,得到u, sigma, vt三个数组,u为mxr的矩阵,sigma为rxr的矩阵,vt为rxn的矩阵,奇异值分解如图2所示,其中sigma除对角线外其他值都为0,sigma数组对角线的值如图3所示
图2 奇异值分解
图3 sigma矩阵
7. 简化sigma矩阵,sigma矩阵变为3x3的矩阵sigma3,u矩阵变为mx3的矩阵u3,将vt矩阵变为3xn的矩阵vt3,其中u3矩阵如图4所示
图4 u3矩阵
8. 使用excel,将u3矩阵转化为散点图,散点图如图5所示
图5 散点图
(2017.7.1修改:操作失误,这里只统计了一个分类,它们本来就属于一个分类,看不出分类效果,应该将多个分类的数据放在一起比较)
9. 使用kmeans算法聚类,结果如图6所示
图6 k-means聚类结果
代码和数据: https://github.com/haibincoder/ToutiaoCrawler 奇异值分解和k-means算法在svd目录
时间会记录下一切。