我正在使用TfidfVectorizer
将一组原始文档转换为TF-IDF特征矩阵,然后计划将其输入到K均值算法中(我将实现该算法)。在该算法中,我需要计算质心(文章类别)和数据点(文章)之间的距离。我将使用欧几里得距离,因此这两个实体需要具有相同的维度,在我的情况下是 max_features
。以下是我的代码:
tfidf = TfidfVectorizer(max_features=10, strip_accents='unicode', analyzer='word', stop_words=stop_words.extra_stopwords, lowercase=True, use_idf=True)
X = tfidf.fit_transform(data['Content']) # the matrix articles x max_features(=words)
for i, row in enumerate(X):
print X[i]
然而,X
似乎是一个稀疏矩阵,因为输出结果为:
(0, 9) 0.723131915847
(0, 8) 0.090245047798
(0, 6) 0.117465276892
(0, 4) 0.379981697363
(0, 3) 0.235921470645
(0, 2) 0.0968780456528
(0, 1) 0.495689001273
(0, 9) 0.624910843051
(0, 8) 0.545911131362
(0, 7) 0.160545991411
(0, 5) 0.49900042174
(0, 4) 0.191549050212
...
我认为(0, col)
表示矩阵中的列索引,实际上就像一个数组,其中每个单元格都指向一个列表。
如何将这个矩阵转换为密集矩阵(使每行具有相同的列数)?
>print type(X)
<class 'scipy.sparse.csr.csr_matrix'>
type(X)
吗? - Will