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


Posted in Python onAugust 08, 2019

前言

由于今年暑假在学习一些自然语言处理的东西,发现网上对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如何使用k-means方法将列表中相似的句子归类

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

Python 相关文章推荐
Python中的localtime()方法使用详解
May 22 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
Jan 09 Python
Python元组拆包和具名元组解析实例详解
Mar 26 Python
Python中property函数用法实例分析
Jun 04 Python
关于Pycharm无法debug问题的总结
Jan 19 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 Python
Flask框架工厂函数用法实例分析
May 25 Python
Python中*args和**kwargs的区别详解
Sep 17 Python
matlab中imadjust函数的作用及应用举例
Feb 27 Python
快速解决jupyter启动卡死的问题
Apr 10 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
python爬虫快速响应服务器的做法
Nov 24 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 #Python
python批量修改ssh密码的实现
Aug 08 #Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 #Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
Aug 08 #Python
python按行读取文件并找出其中指定字符串
Aug 08 #Python
python实现PID算法及测试的例子
Aug 08 #Python
python开头的coding设置方法
Aug 08 #Python
You might like
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
PHP设计模式之适配器模式代码实例
2015/05/11 PHP
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
javascript实现简单加载随机色方块
2015/12/25 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
js分页之前端代码实现和请求处理
2017/08/04 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
通过vue写一个瀑布流插件代码实例
2019/09/07 Javascript
JS一次前端面试经历记录
2020/03/19 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
JavaScript实现无限轮播效果
2020/11/19 Javascript
Python比较两个图片相似度的方法
2015/03/13 Python
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
Python实现识别手写数字大纲
2018/01/29 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
2019/03/27 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
高中同学聚会邀请函
2014/01/11 职场文书
社区包粽子活动方案
2014/01/21 职场文书
写求职信有什么意义
2014/02/17 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
消防安全宣传口号
2014/06/10 职场文书
2014法制宣传日活动总结
2014/07/09 职场文书
校运动会广播稿300字
2014/10/07 职场文书
指导教师推荐意见
2015/06/05 职场文书