zoukankan      html  css  js  c++  java
  • 第八天学习进度--Kmeans的应用之文本聚类

    文本的聚类,就是为了解决大批量文本的自动分类的问题。

    之前遇到过这样一个问题,就是有一堆文章的数据,想要得到这些文章对应的类别。但是这堆文章的数据里面并没有分类的信息,要是按照传统方式,需要人工对每篇文章都进行分类处理,但是这样的分类处理的速度太慢了,而且对于人工来说,工作量也是极其庞大的。是典型的吃力不讨好的一个活,那么有没有什么方法能够对这些数据进行简单的自动聚类呢,也就是无监督对这些文本进行分类。这个时候就要用到Kmeans算法了。

    Kmeans就是指K均值聚类算法,本质上为一种无监督的分类算法,是将预将数据分为K组,则随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心的一种算法。而每个分配给离他最近的聚类中心的对象就都为一个种类。将文章转化为tf-idf或者对应的词向量之后,就能通过Kmeans来对这些文章做无监督的自动聚类了。

    Kmeans一般的过程为:

    1. 在样本中随机选取k个样本点充当各个簇的中心点

    2. 计算所有样本点与各个簇中心之间的距离 ,然后把样本点划入最近的簇中

    3. 根据簇中已有的样本点,重新计算簇中心 

    1. 重复23过程

    在python中使用文本聚类是一个简单的过程,sklearn中为我们提供了Kmeans的模块

    只需导入对应的Kmeans模块即可使用相应的功能

    from sklearn.cluster import KMeans

    接下来需要构建词向量或者tf-idf,这里我们选择词向量

    sklearn同时为我们提供了对应词向量构建的模块CountVectorizer

    导入对应的CountVectorizer即可使用

    from sklearn.feature_extraction.text import CountVectorizer

    接下来调用封装好的相应函数功能即可

        count_vec=CountVectorizer(stop_words=stopwords) #stopwords是停用词列表
        km_matrix= count_vec.fit_transform(wordlist)    #wordlist是以空格为分隔的字符串列表,如['不 开心','很 开心']
        num_clusters = 10 #聚为10类,可根据需要修改,聚类的数量需小于最大分类后的数量
        km = KMeans(n_clusters=num_clusters)
        km.fit(km_matrix)
        clusters = km.labels_.tolist()

    对应的clusters就是对应wordlist的分类后的类别列表了(以0-num_clusters为范围) 

  • 相关阅读:
    OpenCV---在图片上加入文字
    DosBox 报错 this program requires dosxnt.exe to be in your path
    iOS开发-UITableView单选多选/复选实现1
    LeetCode第七题,Reverse Integer
    【PostgreSQL】PostgreSQL操作-psql基本命令
    Bootstrap的js插件之弹出框(popover)
    Qt Quick 图像处理实例之美图秀秀(附源代码下载)
    【甘道夫】并行化频繁模式挖掘算法FP Growth及其在Mahout下的命令使用
    用Visual Studio高版本号打开低版本号的project,转换时出现错误:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
    如何安装ArchLinux
  • 原文地址:https://www.cnblogs.com/halone/p/13307864.html
Copyright © 2011-2022 走看看