资源简介
该资源主要参考我的博客:
[python] Kmeans文本聚类算法+PAC降维+Matplotlib显示聚类图像
http://blog.csdn.net/eastmount/article/details/50545937
包括输入文档txt,共1000行数据,每行都是分词完的文本。
本文主要讲述以下几点:
1.通过scikit-learn计算文本内容的tfidf并构造N*M矩阵(N个文档 M个特征词);
2.调用scikit-learn中的K-means进行文本聚类;
3.使用PAC进行降维处理,每行文本表示成两维数据;
4.最后调用Matplotlib显示聚类效果图。
免费资源,希望对你有所帮助~
By Eastmount

代码片段和文件信息
# coding=utf-8
“““
Created on 2016-01-16 @author: Eastmount
输入:打开 All_BHSpider_Result.txt 对应1000个文本
001~400 5A景区 401~600 动物 601~800 人物 801~1000 国家
输出:BHTfidf_Result.txt tfidf值
参数:weight权重 这是一个重要参数
“““
import time
import re
import os
import sys
import codecs
import shutil
import numpy as np
import matplotlib
import scipy
import matplotlib.pyplot as plt
from sklearn import feature_extraction
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import HashingVectorizer
if __name__ == “__main__“:
#########################################################################
# 第一步 计算TFIDF
#文档预料 空格连接
corpus = []
#读取预料 一行预料为一个文档
for line in open(‘01_All_BHSpider_Content_Result.txt‘ ‘r‘).readlines():
#print line
corpus.append(line.strip())
#print corpus
#参考: http://blog.csdn.net/abcjennifer/article/details/23615947
#vectorizer = HashingVectorizer(n_features = 4000)
#将文本中的词语转换为词频矩阵 矩阵元素a[i][j] 表示j词在i类文本下的词频
vectorizer = CountVectorizer()
#该类会统计每个词语的tf-idf权值
transformer = TfidfTransformer()
#第一个fit_transform是计算tf-idf 第二个fit_transform是将文本转为词频矩阵
tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus))
#获取词袋模型中的所有词语
word = vectorizer.get_feature_names()
#将tf-idf矩阵抽取出来,元素w[i][j]表示j词在i类文本中的tf-idf权重
weight = tfidf.toarray()
#打印特征向量文本内容
print ‘Features length: ‘ + str(len(word))
resName = “BHTfidf_Result.txt“
result = codecs.open(resName ‘w‘ ‘utf-8‘)
for j in range(len(word)):
result.write(word[j] + ‘ ‘)
result.write(‘\r\n\r\n‘)
#打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重
for i in range(len(weight)):
#print u“-------这里输出第“ i u“类文本的词语tf-idf权重------“
for j in range(len(word)):
#print weight[i][j]
result.write(str(weight[i][j]) + ‘ ‘)
result.write(‘\r\n\r\n‘)
result.close()
########################################################################
# 第二步 聚类Kmeans
print ‘Start Kmeans:‘
from sklearn.cluster import KMeans
clf = KMeans(n_clusters=4) #景区 动物 人物 国家
s = clf.fit(weight)
print s
‘‘‘
print ‘Start MiniBatchKmeans:‘
from sklearn.cluster import MiniBatchKMeans
clf = MiniBatchKMeans(n_clusters=20)
s = clf.fit(weight)
print s
‘‘‘
#中心点
print(clf.cluster_centers_)
#每个样本所属的簇
label = [] #存储1000个类标 4个类
print(clf.labels_)
i = 1
while i <= len(clf.labels_):
print i clf.labels_[i-1]
label.append(clf.labels_[i-1])
i = i + 1
#用来评估簇的个数是否合适,距离越小说明簇分的越好,选取临界点的簇个数 958.137281791
print(clf.ine
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1046459 2016-01-17 09:14 python kmeans\01_All_BHSpider_Content_Result.txt
文件 4722 2016-01-20 05:02 python kmeans\01_sklearn_tfidf_cluster_content.py
目录 0 2016-01-20 05:02 python kmeans
----------- --------- ---------- ----- ----
1051181 3
- 上一篇:mysqldb64位
- 下一篇:围棋截屏图片扫描工具
相关资源
- 二级考试python试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
- 一个简单的python爬虫
- csv文件行列转换python实现代码
- Python操作Mysql教程手册
- Python Machine Learning Case Studies
- python获取硬件信息
评论
共有 条评论