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为范围) 

  • 相关阅读:
    STM32对HAL库的LCD驱动移植
    stm32对HAL库的DAC使用
    STM32对HAL库的ADC(多通道DMA)
    STM32对HAL库的ADC(单通道非DMA)
    STM32 fputc函数(重定向)
    STM32的HAL库DMA串口不定长度的读写操作(二)
    STM32对HAL库的PWM控制
    STM32对HAL库的定时器中断
    STM32对HAL库的外部中断处理
    C#上位机制作之串口接受数据(利用接受事件)
  • 原文地址:https://www.cnblogs.com/halone/p/13307864.html
Copyright © 2011-2022 走看看