利用scipy.sparse.csr_matrix构建term-document matrix
2016-06-03 13:28
211 查看
该部分讲解的是scikit-learn中构建term-document矩阵的方法,该方法被用到了以下地方:
例如TfidfVectorizer中的fit_transform方法就是利用scipy的稀疏矩阵构建并返回term-document矩阵:稀疏矩阵Compressed Sparse Row (CSR)存储原理:
下面讲解具体实现代码:
# coding: utf-8
from scipy.sparse.csr import csr_matrix
docs = [["hello", "world", "hello"], ["goodbye", "cruel", "world"]]
indptr = [0] # 存放的是行偏移量
indices = [] # 存放的是data中元素对应的列编号(列编号可重复)
data = [] # 存放的是非0数据元素
vocabulary = {} # key是word词汇,value是列编号
for d in docs: # 遍历每个文档
for term in d: # 遍历文档的每个词汇term
# setdefault如果term不存在,则将新term和他的列
# 编号len(vocabulary)加入到词典中,返回他的编号;
# 如果term存在,则不填加,返回已存在的编号
index = vocabulary.setdefault(term, len(vocabulary))
indices.append(index)
data.append(1)
indptr.append(len(indices))
# csr_matrix可以将同一个词汇次数求和
csr_matrix((data, indices, indptr), dtype=int).toarray()
结果:
[[2 1 0 0]
[0 1 1 1]]
相关文章推荐
- C语言结构体打包的意义
- 中外 凸凹函数的定义是相反的
- RxJava开发精要1-从.NET到RxJava
- JavaScript学习笔记一:数据类型和变量
- linux 限速测试 网页请求速度。
- jstl表达式,前台删除的提示问题
- 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。
- HDOJ 2033 人见人爱A+B (做水题,感觉挺好。。。。)
- LoadResourceDll类,载入资源中的动态链接库(dll)文件,把DLL打包到EXE文件里面
- iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一)
- DB2用一张表更新其他表的数据
- wpa_supplicant 使用
- 第十三章:基于socket.io实现即时通信
- MongoDB 的 GridFS 详细分析
- HDU 1718 Rank (排序)
- 论SOA架构的几种主要开发方式【转】
- winform弹出唯一窗体的方法
- 有关【线程】销毁的理解
- 微信友盟分享失败总结
- 【第九章】 Spring的事务 之 9.2 事务管理器 ——跟我学spring3