合并表达矩阵

Python016

合并表达矩阵,第1张

在跑完htseq或者featureCounts之后会生成很多个如下的样本表达矩阵

我们看一下每个样本有多少行:

发现都是55455行,这样的话就可以按行合并:

最后生成如下矩阵:

这时候发现gene_id是一样的,我们可以提取我们想要的列,比如要第1,2,4,6,8列:

最后就拿到我们想要的合并的表达矩阵。

当然你也可以一步到位:

可能我很快回答不了你的问题。还需要细细回味一下。

但是我觉得你的问题是一个比较明显的短文本聚类问题,这个问题应该在国际上都是比较难的吧。

如果还涉及到中文,中文的相关处理又不能照抄英文短文本聚类的方法,相关资料更加少了。

我倒是建议你 多看一些短文本聚类相关的文章。

问题一:技术上python矩阵表示的话:你可以使用python包,如下:

from numpy import matrix

A = matrix( [[1,2,3],[11,12,13],[21,22,23]])

这样你需要额外规定化:行i表示文档编号i的文档,列j表示词j出现次数,A[i][j]表示在文档i中词j的出现频率

或者

如同那篇文章所说的采用dict表示法:A = [{'额外':1},{'每天':1,'回帖':1},......]表示整个文档集合。

问题二:如同这样的问题本质一样,短文本聚类是否还适合传统的分词,去除副词...等处理步骤,

如何选择合适的模型来表示这类问题,我觉得你还是参考一些这方面的文章,最好中文的。

比如现在很火的微博,也会有好多的人尝试对其中成干上万评论进行聚类。很多进行二类或者三类聚类/分类:支持-中立-反对。

论坛的评论应该很早以前就有研究聚类/分类.我觉得去那里参考会更好.如果不是特别面向指定目的的聚类,我觉得采用一些使用宽泛的方法就行了。感觉结果不会很好。

问题三:EM算法感觉像纯数学的东西,学术功底不够深,我也不好发表看法。

感觉这个问题的本质已经超出我的知识范畴。最简单文档聚类无非:分词-文本预处理[同义词之类]-文档与词计频矩阵表示-(TF-IDF预处理)-kmeans跑起来-输出结果.

【问题】

将lst = [ [1, 2, 3], [2, 1, 3], [8, 4, 3] ],变为[1, 2, 3, 2, 1, 3, 8, 4, 3]

【方法】

1. myList = [x for j in lst for x in j]

2. 

mylist = []

for i in L:

    mylist += i

print(mylist)

3. 使用标准库中的itertools(循环器)

from itertools import chain

mylist = list(chain(*lst))

print(mylist)