资源简介
该资源主要参考我的博客:
[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位
- 下一篇:围棋截屏图片扫描工具
相关资源
- 围棋截屏图片扫描工具
- mysqldb64位
- abaqus激光增材仿真,生死单元添加p
- 利用Python爬虫批量百度图库图片
- 基于python的深度信念网络
- win10下调用OpenCV-Python和YOLACT模型进行
- Python多线程子域名扫描自带字典
- modbus通信的Python实现
- python批量pdf转txt
- 遗传算法python代码
- 爬取京东评论。代码
- 迷宫问题的A*算法(python实现)
- Mod_Python2.7安装文件
- 王硕-你也能看懂的python算法书-随书代
- 使用Python实现的网络社团发现GN算法
- python3的ARP简单攻击脚本
- 详解python实现FP-TREE进行关联规则挖掘
- Python 正则表达式操作指南 Regular ex<
- k匿名隐私保护算法python版
- Python人工智能AI深度学习全套课程.t
- python实现的使用huffman编码对文本的压
- 爬取58同城
- python提取点云数据
- 千锋python爬虫教程之scrapy框架.txt
- Python教学视频哪个好
- 小甲鱼python课程96集包含源码+课件+课
- 小甲鱼python课程96集含源码课件课后习
- Python从入门到精通教程共40G.txt
- python与json
- python的BFS,DFS,UCS,A星算法
评论
共有 条评论