在Python中重现R代码的文本文档之间的余弦相似性

时间:2018-02-26 23:47:48

标签: python r hierarchical-clustering

我正在尝试使用描述列的分层聚类创建聚类,即此数据集的CDESCR。 https://drive.google.com/open?id=18c82RFffg_3ZoRJubQvq6oOjk1Q9Slai

我在R中有以下代码,虽然我可以成功创建集群,但我想在Python中进行相同的分析。

R-代码:

test <- data$CDESCR
test.corpus <- Corpus(VectorSource(test))
test.dtm <- TermDocumentMatrix(test.corpus)
test.dtm2 <- removeSparseTerms(test.dtm, sparse=0.95)
Dist.tdm <- test.dtm2
lsa.space = lsa(Dist.tdm, dimcalc_share())
lsa.textdoc = as.textmatrix(lsa.space)
cos.similarity = as.data.frame(cosine(lsa.textdoc))
DistSum.df.scale <- scale(cos.similarity)
d <- dist(DistSum.df.scale, method = "euclidean")
d <- replace(d, is.na(d), 0)
fit_Death <- hclust(d, method="ward.D2")
groups_death <- cutree(fit_Death, k=8) # cut tree into 8 clusters
clusters_death <- as.data.frame(groups_death)

到目前为止,在Python中我做了以下事情: 这里的tokenizer是一个简单的标记器,用于删除数据中的标点符号和其他噪声

vectorizer = TfidfVectorizer(min_df=2, 
max_features=1000,tokenizer=tokenizer, ngram_range=(1,1))
X = vectorizer.fit_transform(list(data['CDESCR']))

svd = TruncatedSVD(117)
normalizer = Normalizer(copy=False)
lsa = make_pipeline(svd, normalizer)

X = lsa.fit_transform(X)

from sklearn.metrics.pairwise import linear_kernel
dist = linear_kernel(X,X)

from scipy.cluster.hierarchy import ward, dendrogram, cut_tree

linkage_matrix = ward(dist)
num_clusters=8
cutree = cut_tree(linkage_matrix, n_clusters=num_clusters)

但是,我没有得到相同的结果。 我想我无法从余弦相似度的缩放中重现R的代码。 如果有人能帮助我,我将不胜感激。

0 个答案:

没有答案