zoukankan      html  css  js  c++  java
  • 奇异值分解和聚类分析操作流程

    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目录

     

  • 相关阅读:
    【python】raise_for_status()抛出requests.HTTPError错误
    【python】python打包生成的exe文件运行时提示缺少模块
    单点登录原理与简单实现
    Java并发之AQS详解
    Java更新
    各种java面经资源
    HashMap与HashTable的区别
    Http 与Https
    SpringMVC运行原理
    Spring
  • 原文地址:https://www.cnblogs.com/bincoding/p/6922718.html
Copyright © 2011-2022 走看看