可以通过使用截断的SVD来降低维度。它通过截断奇异值分解(SVD)执行线性降维。但是,必须在分解之前选择组件数量。
n_comp = 25
tfidf_vec = TfidfVectorizer(analyzer="word", max_features=5000, ngram_range=(1,2))
svd = TruncatedSVD(n_components=n_comp, algorithm='arpack')
tfidf_df = tfidf_vec.fit_transform(values)
df = svd.fit_transform(tfidf_df)
如何选择组件数量?
答案 0 :(得分:3)
var_explained = svd.explained_variance_ratio_.sum()
上面的行将帮助您确定25个组件是否足够好地捕获数据的可变性。 有时,var_explained> = 0.9或var_explained> = 0.95会减少分析中需要的变量数量。
答案 1 :(得分:1)
学术答案:https://en.wikipedia.org/wiki/Johnson%E2%80%93Lindenstrauss_lemma
在数学中,Johnson-Lindenstrauss引理是关于从高维到低维欧几里德空间的低失真嵌入点的结果。该引理指出,高维空间中的一小组点可以嵌入到更低维度的空间中,使得点之间的距离几乎保持不变。用于嵌入的地图至少是Lipschitz,甚至可以被视为正交投影。
实际答案:尝试多个维度,为您的目标找到最佳价值。
答案 2 :(得分:1)