Python如何使用k-means方法将列表中相似的句子归类

 更新时间:2019年08月08日 15:25:01   作者:爱吃橙子的人吖  
这篇文章主要介绍了Python如何使用k-means方法将列表中相似的句子聚为一类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

前言

由于今年暑假在学习一些自然语言处理的东西,发现网上对k-means的讲解不是很清楚,网上大多数代码只是将聚类结果以图片的形式呈现,而不是将聚类的结果表示出来,于是我将老师给的代码和网上的代码结合了一下,由于网上有许多关于k-means算法基础知识的讲解,因此我在这里就不多讲解了,想了解详细内容的,大家可以自行百度,在这里我只把我的代码给大家展示一下。

k-means方法的缺点是k值需要自己找,大家可以多换换k值,看看结果会有什么不同

代码

# coding: utf-8
import sys
import math
import re
import docx
from sklearn.cluster import AffinityPropagation
import nltk
from nltk.corpus import wordnet as wn
from nltk.collocations import *
import numpy as np
reload(sys)
sys.setdefaultencoding('utf8')
from sklearn.feature_extraction.text import CountVectorizer
#要聚类的数据
corpus = [
 'This is the first document.',#0
 'This is the second second document.',#1
 'And the third one.',#2
 'Is this the first document?',#3
 'I like reading',#4
 'do you like reading?',#5
 'how funny you are! ',#6
 'he is a good guy',#7
 'she is a beautiful girl',#8
 'who am i',#9
 'i like writing',#10
 'And the first one',#11
 'do you play basketball',#12
]
#将文本中的词语转换为词频矩阵
vectorizer = CountVectorizer()
#计算个词语出现的次数
X = vectorizer.fit_transform(corpus)#获取词袋中所有文本关键词
word = vectorizer.get_feature_names()
#类调用
transformer = TfidfTransformer()
#将词频矩阵X统计成TF-IDF值
tfidf = transformer.fit_transform(X)
#查看数据结构 tfidf[i][j]表示i类文本中的tf-idf权重
weight = tfidf.toarray()
# print weight
# kmeans聚类
from sklearn.cluster import KMeans
# print data
kmeans = KMeans(n_clusters=5, random_state=0).fit(weight)#k值可以自己设置,不一定是五类
# print kmeans
centroid_list = kmeans.cluster_centers_
labels = kmeans.labels_
n_clusters_ = len(centroid_list)
# print "cluster centroids:",centroid_list
print labels
max_centroid = 0
max_cluster_id = 0
cluster_menmbers_list = []
for i in range(0, n_clusters_):
 menmbers_list = []
 for j in range(0, len(labels)):
  if labels[j] == i:
   menmbers_list.append(j)
 cluster_menmbers_list.append(menmbers_list)
# print cluster_menmbers_list

#聚类结果
for i in range(0,len(cluster_menmbers_list)):
 print '第' + str(i) + '类' + '---------------------'
 for j in range(0,len(cluster_menmbers_list[i])):
  a = cluster_menmbers_list[i][j]
  print corpus[a]

运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python爬虫requests模块之URL地址中的参数解读

    Python爬虫requests模块之URL地址中的参数解读

    这篇文章主要介绍了Python爬虫requests模块之URL地址中的参数解读,在你拿到数据所在的url地址之后,发送网络请求时,请求的url中包含两种地址参数:查询参数和请求参数,需要的朋友可以参考下
    2023-08-08
  • Python解释执行原理分析

    Python解释执行原理分析

    这篇文章主要介绍了Python解释执行原理,有助于读者深入理解Python运行机制,需要的朋友可以参考下
    2014-08-08
  • 使用python找出list列表中相同元素(指定元素)的所有索引

    使用python找出list列表中相同元素(指定元素)的所有索引

    这篇文章主要给大家介绍了关于使用python找出list列表中相同元素(指定元素)的所有索引,在平时开发过程中经常遇到需要在数据中获取特定的元素索引的信息,需要的朋友可以参考下
    2023-08-08
  • Jmeter通过OS进程取样器调用Python脚本实现参数互传

    Jmeter通过OS进程取样器调用Python脚本实现参数互传

    这篇文章主要介绍了Jmeter通过OS进程取样器调用Python脚本实现参数互传,描述在cmd中调用上面的Python脚本并传入两个参数展开主题,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-03-03
  • Matplotlib多子图使用一个图例的实现

    Matplotlib多子图使用一个图例的实现

    多子图是Matplotlib中的一个功能,可以在同一图形中创建多个子图,本文主要介绍了Matplotlib多子图使用一个图例的实现,感兴趣的可以了解一下
    2023-08-08
  • Python 移动光标位置的方法

    Python 移动光标位置的方法

    今天小编就为大家分享一篇Python 移动光标位置的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python面向对象编程repr方法示例详解

    Python面向对象编程repr方法示例详解

    这篇文章主要介绍了Python面向对象编程repr方法的示例详解,文中附含详细的代码示例,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • Python ArcPy批量掩膜、重采样大量遥感影像的操作

    Python ArcPy批量掩膜、重采样大量遥感影像的操作

    这篇文章主要介绍了Python ArcPy批量掩膜、重采样大量遥感影像,本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件进行批量掩膜与批量重采样的操作,需要的朋友可以参考下
    2023-03-03
  • python使用paramiko执行服务器脚本并拿到实时结果

    python使用paramiko执行服务器脚本并拿到实时结果

    这篇文章主要介绍了python使用paramiko执行服务器脚本并拿到实时结果,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • python中argparse模块用法实例详解

    python中argparse模块用法实例详解

    这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下
    2015-06-06

最新评论